首頁 > 後端開發 > C++ > C 真的是 C 的子集:探索關鍵差異和例外嗎?

C 真的是 C 的子集:探索關鍵差異和例外嗎?

Linda Hamilton
發布: 2024-12-31 14:05:10
原創
834 人瀏覽過

Is C Truly a Subset of C  :  Exploring Key Differences and Exceptions?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板