windows下__attribute__((constructor))
时间: 2023-11-05 08:06:45 浏览: 142
__attribute__
4星 · 用户满意度95%
在 Windows 平台下,没有 __attribute__((constructor)) 这个编译属性,因为这个属性是 GCC 编译器特有的。不过,Windows 平台可以使用 Microsoft Visual C++ 编译器提供的类似功能的编译属性:__declspec 构造函数属性。
__declspec 构造函数属性可以用来指定一个函数在程序启动时自动执行,相当于 GCC 的 __attribute__((constructor))。具体用法如下:
```c++
#include <iostream>
using namespace std;
static void init() __declspec(dllexport);
#pragma section(".CRT$XCU",read)
__declspec(allocate(".CRT$XCU")) void (*init_ptr)() = init;
static void init()
{
cout << "Hello world!" << endl;
}
```
这个例子中,我们使用 __declspec(dllexport) 声明 init() 函数是可导出的,然后使用 __declspec(allocate) 声明一个指向 init() 函数的函数指针 init_ptr,并将其放到名为 .CRT$XCU 的特定区域中。最后,我们定义 init() 函数,这个函数会在程序启动时自动执行,并输出 "Hello world!"。
阅读全文