1

重要なオブジェクトの開始を確実にするために、関数が最初にプログラムによって呼び出されるようにしようとしています。しかし、私はどのようinit_segに使用/呼び出されるのかについて混乱しています。

たとえば、msdnのドキュメントから、次のものが最初に呼び出されるように見えます。

#pragma init_seg( ".CRT$XCC" )

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

ただし、その関数は明らかに自動的に呼び出されないため、そうではないようです(もちろん、明示的に呼び出さない限り)。

init_setを使用して、他の実行中のコードの残りの前に関数が呼び出されるようにするにはどうすればよいですか?

4

1 に答える 1

1

私が正しく理解している場合は、最初に初期化するすべてのグローバル変数を、#pragma init_seg

例:

#pragma init_seg( ".CRT$XCB" )

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

static A first;

また、最初に初期化するグローバル以外のグローバルをそのファイルに配置しないようにしてください。

于 2012-04-18T09:07:21.883 に答える