使用init_seg调用初​​始化函数

时间:2012-04-18 08:40:06

标签: c++ visual-c++

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

例如,从msdn的文档中看起来似乎是第一个被调用的。

#pragma init_seg( ".CRT$XCC" )

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

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

如何使用init_set确保在其他执行代码之前调用函数?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么首先将要初始化的所有全局变量放在与#pragma init_seg

相同的文件中

示例:

#pragma init_seg( ".CRT$XCB" )

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

static A first;

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