加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 20:25:21 所属栏目:百科 来源:网络整理
导读:我知道并且我之前使用过#pragma startup和#pragma exit但是当我执行以下代码时它只输出In main.谁能告诉我这里发生了什么? #includestdio.h#pragma startup A 110#pragma startup B#pragma exit A#pragma exit B 110int main(){ printf("nIn main"); retur
我知道并且我之前使用过#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编译指示,实现有义务识别,但这并不会对答案产生重大影响)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读