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手册。

 

posted @ 2011-05-02 00:09  Socrates  阅读(188)  评论(0编辑  收藏  举报