
附錄 A
GCC 對 C 語言所做的擴充
GNU Compiler Collection(簡稱 GCC)對 C 語言做了許多擴充,其中有一些已被證明
對系統程式設計者具有特殊的價值。本附錄將介紹的 C 語言擴充,主要是讓程式設計者
得以把「關於程式碼之行為與用法的」額外資訊提供給編譯器。接著,編譯器會利用此
資訊產生更有效率的機器碼。其他的擴充用於填補 C 程式語言的缺口,特別是較低階的
部分。
GCC 所提供的若干擴充,現在已經存在於最新的 C 語言標準 ISO C11。這些擴充功能有
若干類似於它們的 C11 表親,但是 ISO C11 所實現的其他擴充則頗為不同。新的程式碼
應該使用這些功能經編準化的變體。本附錄將不會說明此類擴充;只會探討 GCC 特有
的擴充。
GNU C
GCC 所支援的 C 語言稱為 GNU C。1990 年代,GNU C 填補了 C 語言若干的缺口,提
供複變數(complex variable)、零長度陣列(zero-length array)、內嵌(inline)函式以
及具名初始程序(named initializer)之類的功能。但經過了將近十年的時間,C 語言終
於升級,並進行了 ISO C99 的標準化,接著進行了 ISO C11 的標準化,GNU C 的擴充
變得無關緊要。儘管如此,GNU C 仍繼續提供有用的功能,而且許多 Linux 程式設計者
仍在他們的與 C99 或 C11 相容之程式碼中使用 GNU C 的子集。
完全以 GNU C 寫成的程式中,Linux ...