c++ - 使用 init_seg 调用初始化函数

标签 c++ visual-c++

我试图确保程序首先调用函数以确保关键对象的初始化。但是,我对如何使用/调用 init_seg 感到困惑。

例如,从 msdn 的文档来看,似乎首先调用的是以下内容。

#pragma init_seg( ".CRT$XCC" )

static void InitializeStuff()
{
    printf("InitializeStuff\n");
}

但是,情况似乎并非如此,因为该函数显然不会被自动调用(当然,除非我明确调用它)。

我如何使用 init_set 来确保函数在我的其他执行代码的其余部分之前被调用?

最佳答案

如果我没有理解错的话,你可以将所有你想要初始化的全局变量放在与 #pragma init_seg

相同的文件中

例子:

#pragma init_seg( ".CRT$XCB" )

class A
{
    A()
    {
        printf("first!\n");
    }
};

static A first;

并确保除了要首先初始化的全局变量外,不要在该文件中放置任何其他全局变量。

关于c++ - 使用 init_seg 调用初始化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10205800/

相关文章:

c++ - int a=int(); C++98 中会发生什么?

c++ - Windows 资源管理器右键单击文件和文件夹的上下文菜单

arrays - 数组在内存中的布局

c++ - 将模板函数转换为非模板类​​?

c++ - 我可以使用 WRL 编写 COM 服务器吗?

c++ - bool 变量通常是作为单个位实现的吗?

c++ - 如何使用 WINAPI 和 C++ 提取可执行文件的文件描述?

c++ - 从控制台读取 : operator>> for enum inside template class

c++ - MFC:拖动滚动条拇指时的奇怪行为

c++ - Eclipse CDT 与 Cygwin GCC : automatic discovery of symbols and paths