C核心技術手冊(四十二)

2022-03-10 17:52:55 字數 1609 閱讀 8820

當編寫乙個

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...