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

因为这些 pragma 都不被GCC识别。通常,如果您尝试编写可移植代码,请远离编译指示,因为它们在每个编译器甚至同一编译器系列中的每个平台上都不同。

于 2012-07-20T20:22:34.593 回答