C核心技术手册(四十二)
18.4 C方言
??當(dāng)編寫(xiě)一個(gè)C程序時(shí),首先要做的一件事是確定在多種C的定義中遵循哪一種,GCC的默認(rèn)方言版本為“GNU C”,它在很大程度上為ISO/IEC 9899:1900標(biāo)準(zhǔn),以及它發(fā)布的勘誤表和許多語(yǔ)言擴(kuò)展,這些擴(kuò)展一部分已經(jīng)包含在C99中標(biāo)準(zhǔn)化了,例如復(fù)雜浮點(diǎn)類(lèi)型和long long整形,另外一部分特性沒(méi)有被采用,例如,復(fù)雜整形類(lèi)型和長(zhǎng)度為0的數(shù)組,全部的擴(kuò)展列表在GCC文檔中有提供。
??要關(guān)閉所有GNU C的擴(kuò)展,可以使用命令行選項(xiàng) –ansi, 本書(shū)以ISO/IEC 9899:1999 (或C99)來(lái)進(jìn)行描述。
GCC語(yǔ)言標(biāo)準(zhǔn)化選項(xiàng)有:
-std=iso9899:1990, -std=c89, -ansi
??這三個(gè)選項(xiàng)表示同一個(gè)意思,遵循ISO/IEC 9899:1900,包括技術(shù)勘誤表1994和1996, 這不是不接受擴(kuò)展,而是如果GNU的擴(kuò)展與ISO標(biāo)準(zhǔn)沖突時(shí),才會(huì)禁止,例如typdeof操作符。
-std=iso9899:199409
??遵循“AMD1”, 1995圖際化對(duì)ISO/IEC 9899:1900進(jìn)行了改善。
-std=iso9899:1999, -std=c99
??遵循ISO/IEC 9899:1999,以用勘誤表2001,注意對(duì)C99的所有支持依然沒(méi)有全部完成,可以通過(guò)http://gcc.gnu.org/c99status.html來(lái)查看當(dāng)前的發(fā)展?fàn)顟B(tài)。
-std=gnu89
??支持ISO/IEC 9899:1990,以及GNU擴(kuò)展,這是GCC默認(rèn)支持的。
-std=gnu99
??支持ISO/IEC9899:1999,以及GNU擴(kuò)展,此方言被認(rèn)為在C99版本的支持完成后,會(huì)在新的GCC版本中成為默認(rèn)的方言。
??對(duì)于其中的任何一個(gè)選項(xiàng),如果你想讓GCC打印標(biāo)準(zhǔn)版本所要求的所有告警,并拒絕所有被禁止的擴(kuò)展,你必須添加選項(xiàng)-pedantic。選項(xiàng)-pedantic-errors將會(huì)使編譯失敗,當(dāng)警告產(chǎn)生時(shí)。
??早期的GCC版本提供一個(gè)-traditional選項(xiàng),它用做提供對(duì)pre-ANSI或K&R風(fēng)格的C的支持,現(xiàn)在的GCC僅在預(yù)編譯階段支持此選項(xiàng),且當(dāng)與-E選項(xiàng)一起使用時(shí)才接受它,-E的意思是執(zhí)行預(yù)編譯,完成后退出。
??此外,許多GCC選項(xiàng)允許你使用或者禁用不同標(biāo)準(zhǔn)及擴(kuò)展的一些個(gè)別方面,例如,-trigraphs選項(xiàng)允許使用三字母詞,盡管沒(méi)有使用-ansi選項(xiàng),要了解所有方言選項(xiàng)的信息,請(qǐng)查看GCC手冊(cè)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/dyx1024/archive/2011/05/02/2556755.html
總結(jié)
以上是生活随笔為你收集整理的C核心技术手册(四十二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 配置多台三层交换VLAN间相互通信
- 下一篇: 我的测试生活感悟2 - Art Of U