C 作為C 的子集的例外
雖然通常說C 是C 的子集,但這種斷言並不完全準確。比較 C 和 C 的特定版本時會出現差異。
C89 與C 差異
-
沒有暫定定義: C 沒有不允許重新宣告沒有定義的同名變數
-
不同陣列類型相容性: C 區分特定大小的陣列(例如int a[1])和未指定大小的陣列(例如 int (*ap)[ ]),而 C 允許它們相容。
-
無 K&R 函數宣告風格: C 需要不同的函數定義語法,不允許舊的 K&R 風格(例如 int b(a) int a; { })。
-
嵌套結構作用域差異: 在C 中,嵌套結構被視為類別級聲明,使其在封閉結構之外無法存取struct.
- 無預設int 類型: 在C 中,自動變數需要明確型別說明符,這與C 中預設假定int 不同。
C99 與C 的差異
C99 引入了與嚴格C 的額外偏差相容性:
-
數組維度限制:
C99不允許在指定函數參數的陣列維度時使用某些特殊字元。 -
不存在可變長度數組:
C 中不支援使用非常量表達式作為大小聲明的變長數組.-
沒有靈活數組成員:
C99 的靈活陣列成員(可在運行時指定大小)與C 不相容。 -
缺乏限制限定符:
C 的限制限定符,用於最佳化目的,在以下版本中不可用C99.
以上是C 真的是 C 的子集:探索關鍵差異和例外嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!