我知道并且我用过#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(使用前将#替换为@)