當編寫乙個
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...