C核心技术手册(四十二)
18.4 C方言
??當編寫一個C程序時,首先要做的一件事是確定在多種C的定義中遵循哪一種,GCC的默認方言版本為“GNU C”,它在很大程度上為ISO/IEC 9899:1900標準,以及它發布的勘誤表和許多語言擴展,這些擴展一部分已經包含在C99中標準化了,例如復雜浮點類型和long long整形,另外一部分特性沒有被采用,例如,復雜整形類型和長度為0的數組,全部的擴展列表在GCC文檔中有提供。
??要關閉所有GNU C的擴展,可以使用命令行選項 –ansi, 本書以ISO/IEC 9899:1999 (或C99)來進行描述。
GCC語言標準化選項有:
-std=iso9899:1990, -std=c89, -ansi
??這三個選項表示同一個意思,遵循ISO/IEC 9899:1900,包括技術勘誤表1994和1996, 這不是不接受擴展,而是如果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-ANSI或K&R風格的C的支持,現在的GCC僅在預編譯階段支持此選項,且當與-E選項一起使用時才接受它,-E的意思是執行預編譯,完成后退出。
??此外,許多GCC選項允許你使用或者禁用不同標準及擴展的一些個別方面,例如,-trigraphs選項允許使用三字母詞,盡管沒有使用-ansi選項,要了解所有方言選項的信息,請查看GCC手冊。
?
轉載于:https://www.cnblogs.com/dyx1024/archive/2011/05/02/2556755.html
總結
以上是生活随笔為你收集整理的C核心技术手册(四十二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置多台三层交换VLAN间相互通信
- 下一篇: 我的测试生活感悟2 - Art Of U