前端之家收集整理的这篇文章主要介绍了
#pragma指令编译器是否依赖?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道并且我之前使用过#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:“忽略实现无法识别的任何此类编译指示.”).这就是您的程序成功编译的原因.
函数A和B未被调用,因为…您不会调用它们.如果您完全理解这一点,请道歉,但是:通过调用函数main来执行C程序.如果要调用函数A和B,则必须在main函数中执行此操作.
(事实上,最新版本的C标准引入了少量STDC编译指示,实现有义务识别,但这并不会对答案产生重大影响)
原文链接:https://www.f2er.com/javaschema/281329.html