1

以下のプログラムを検討してください。

#pragma startup foo1
#pragma exit foo2

void foo1()
{
    printf("Called before main\n");
}

void foo2()
{
    printf("Called after main\n");
}

int main()
{
    printf("main called\n");
    return 0;
}

次のように出力を取得しています:http://ideone.com/ooMFI

main called

なぜpragmaここで機能しないのですか?
なぜfoo1()とfoo2()が呼び出されないのですか?

4

1 に答える 1

6

これらのプラグマはいずれもGCCによって認識されないためです。一般に、ポータブルコードを作成しようとしている場合は、プラグマを避けてください。プラグマはコンパイラごとに、さらには同じコンパイラファミリ内のプラットフォームごとにも異なるためです。

于 2012-07-20T20:22:34.593 に答える