首頁 >後端開發 >C++ >C 在編譯和語法方面與 C 有何細微差別?

C 在編譯和語法方面與 C 有何細微差別?

Susan Sarandon
Susan Sarandon原創
2024-12-17 04:54:25535瀏覽

How Does C Differ Subtly from C   in Terms of Compilation and Syntax?

C 與 C 的微妙偏離

雖然人們普遍認為 C 是 C 的子集,但仔細檢查會發現細微的差異。以下是C 中編譯的程式碼在C 中遇到障礙的一些實例:

沒有暫定定義

在C 中,重新定義變數是非法的,與C 不同,在C 中,暫定定義是非法的。定義允許後續重新定義。

數組類型不相容性

C 區分有大小和無大小的數組類型,使得 int[] 和 int[N] 不相容。然而,C 允許它們互換使用。

K&R 函數語法

C 不允許K&R 風格的函數定義,其中函數參數清單直接跟在回傳類型後面.

巢狀結構作用域

C 定義巢狀結構具有類別作用域,而 C則遵循本地作用域的早期行為。

預設int

在C 中,在沒有明確型別說明符的情況下使用「auto」是無效的,這與在C 中預設為int .

其他C99不相容性

C99 引入了更多差異:

數組維度說明符

C不允許在函數參數的數組維度中使用聲明說明符,這在C 中允許。

可變長度數組

C 忽略對可變長度數組的支持,而 C 通過聲明具有非常大小的數組來允許它們。

靈活陣列成員

C 在結構中缺少靈活的陣列成員,這是 C 中存在的功能。

限制限定符

C 引入了限制限定符協助別名分析,但在 C 中不支援。

以上是C 在編譯和語法方面與 C 有何細微差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn