请你来写个函数在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; }