在 main 函数之前执行一段代码

在 main 函数之前执行一段代码

方法1:构造全局对象

你可以定义一个类,并在其构造函数中执行所需的代码。然后,创建该类的全局对象。由于全局对象在main函数之前初始化,因此其构造函数会在main函数之前执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>

using namespace std;

class Initializer {
public:
Initializer() {
cout << "This runs before main()" << endl;
}
};

// 创建全局对象
Initializer initializer;

int main() {
cout << "This runs in main()" << endl;
return 0;
}

方法2:使用__attribute__((constructor))(GCC特定)

在GCC编译器中,你可以使用__attribute__((constructor))属性来指定一个函数在main函数之前执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>

using namespace std;

void before_main() __attribute__((constructor));

void before_main() {
cout << "This runs before main()" << endl;
}

int main() {
cout << "This runs in main()" << endl;
return 0;
}

总结

  • 方法1:全局对象的构造函数在main函数之前执行。
  • 方法2__attribute__((constructor))属性指定的函数在main函数之前执行(仅适用于GCC)。

在 main 函数之前执行一段代码
https://linhanmic.github.io/2024/09/14/在 main 函数之前执行一段代码/
作者
Linhanmic
发布于
2024年9月14日
更新于
2024年9月14日
许可协议