當編寫乙個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的所有支援依然沒有全部完成,可以通過
來檢視當前的發展狀態。
-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手冊。
C核心技術手冊(四十二)
當編寫乙個c 程式時,首先要做的一件事是確定在多種c 的定義中遵循哪一種,gcc 的預設方言版本為 gnu c 它在很大程度上為iso iec 9899 1900 標準,以及它發布的勘誤表和許多語言擴充套件,這些擴充套件一部分已經包含在c99 中標準化了,例如複雜浮點型別和long long 整形,...
C核心技術手冊(四十二)
當編寫乙個 c程式時,首先要做的一件事是確定在多種 c的定義中遵循哪一種,gcc的預設方言版本為 gnu c 它在很大程度上為 iso iec 9899 1900 標準,以及它發布的勘誤表和許多語言擴充套件,這些擴充套件一部分已經包含在 c99中標準化了,例如複雜浮點型別和 long long 整形...
C核心技術手冊(四十)
18.3.3.3 動態鏈結和共享object檔案 共享庫為特殊的 object 建立乙個共享 object 檔案,可使用 gcc的 shared 選專案,輸入必須是乙個存在的 object 檔案。下面是乙個簡單的例子 gcc c circulararea.c gcc shared o libcirc...