请你来写个函数在main函数执行前先运行
全局static变量的初始化在程序初始阶段,先于main函数的执行,所以可以利用这一点。在leetcode里经常见到利用一点,在main之前关闭cin与stdin的同步来“加快”速度的黑科技:
static int _ = []{
cin.sync_with_stdio(false);
return 0;
}();__attribute((constructor))是gcc扩展,标记这个函数应当在main函数之前执行。同样有一个__attribute((destructor)),标记函数应当在程序结束之前(main结束之后,或者调用了exit后)执行
#include <iostream>
using namespace std;
__attribute((constructor))void test0()
{
printf("before main 0\n");
}
int test1(){
cout << "before main 1" << endl;
return 54;
}
static int i = test1();
int main(int argc, char** argv) {
cout << "main function." <<endl;
return 0;
}