#pragma 指令是否依赖于编译器?

2024-05-04

我知道并且我用过#pragma startup and #pragma exit之前,但当我执行以下代码时,它仅输出In main。谁能告诉我这里发生了什么事?

#include<stdio.h>
#pragma startup A 110
#pragma startup B
#pragma exit A
#pragma exit B 110

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

void A()
{
    printf("\nIn A");
}

void B()
{
    printf("\nIn B");
}

或者它依赖于编译器?我正在使用 gcc 编译器。


All #pragma指令是依赖于编译器的,编译器是不得不忽略任何它无法识别的内容(ISO-9899:2011,s6.10.6:“任何无法被实现识别的此类编译指示都会被忽略。”)。这就是您的程序编译成功的原因。

功能A and B没有被调用是因为...你没有调用他们。如果您完全理解这一点,我深表歉意,但是:C 程序是通过调用函数来执行的main。如果你想要这些功能A and B要被召唤,您必须在规定时间内这样做main功能。

(事实上​​,最近版本的 C 标准引入了少量STDC实现必须识别的编译指示,但这并不重要地影响答案)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#pragma 指令是否依赖于编译器? 的相关文章

随机推荐