我知道并且我之前使用过#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编译指示,实现有义务识别,但这并不会对答案产生重大影响)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。