gpt4 book ai didi

c - #pragma 指令编译器依赖吗?

转载 作者:太空狗 更新时间:2023-10-29 17:21:30 25 4
gpt4 key购买 nike

我知道并且我之前使用过#pragma startup#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 编译器。

最佳答案

所有 #pragma 指令都依赖于编译器,编译器有义务忽略任何它无法识别的指令(ISO-9899:2011, s6.10.6: “任何未被实现识别的编译指示都将被忽略。”)。这就是您的程序编译成功的原因。

函数 AB 没有被调用,因为......你没有调用它们。抱歉,如果您完全理解这一点,但是:C 程序是通过调用函数 main 来执行的。如果您想要调用函数 AB,您必须在 main 函数中执行此操作。

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

关于c - #pragma 指令编译器依赖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15314039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com