C核心技术手册(四十二)

18.4 C方言

当编写一个C程序时,首先要做的一件事是确定在多种C的定义中遵循哪一种,GCC的默认方言版本为“GNU C”,它在很大程度上为ISO/IEC 98991900标准,以及它发布的勘误表和许多语言扩展,这些扩展一部分已经包含在C99中标准化了,例如复杂浮点类型和long long整形,另外一部分特性没有被采用,例如,复杂整形类型和长度为0的数组,全部的扩展列表在GCC文档中有提供。

要关闭所有GNU C的扩展,可以使用命令行选项 –ansi, 本书以ISO/IEC 9899:1999 (或C99)来进行描述。

GCC语言标准化选项有:

-std=iso9899:1990, -std=c89, -ansi

这三个选项表示同一个意思,遵循ISO/IEC 9899:1900,包括技术勘误表19941996, 这不是不接受扩展,而是如果GNU的扩展与ISO标准冲突时,才会禁止,例如typdeof操作符。

-std=iso9899:199409

遵循“AMD1, 1995图际化对ISO/IEC 9899:1900进行了改善。

-std=iso9899:1999, -std=c99

遵循ISO/IEC 9899:1999,以用勘误表2001,注意对C99的所有支持依然没有全部完成,可以通过http://gcc.gnu.org/c99status.html来查看当前的发展状态。

-std=gnu89

支持ISO/IEC 9899:1990,以及GNU扩展,这是GCC默认支持的。

-std=gnu99

支持ISO/IEC9899:1999,以及GNU扩展,此方言被认为在C99版本的支持完成后,会在新的GCC版本中成为默认的方言。

对于其中的任何一个选项,如果你想让GCC打印标准版本所要求的所有告警,并拒绝所有被禁止的扩展,你必须添加选项-pedantic。选项-pedantic-errors将会使编译失败,当警告产生时。

早期的GCC版本提供一个-traditional选项,它用做提供对pre-ANSIK&R风格的C的支持,现在的GCC仅在预编译阶段支持此选项,且当与-E选项一起使用时才接受它,-E的意思是执行预编译,完成后退出。

此外,许多GCC选项允许你使用或者禁用不同标准及扩展的一些个别方面,例如,-trigraphs选项允许使用三字母词,尽管没有使用-ansi选项,要了解所有方言选项的信息,请查看GCC手册。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值