首頁 >後端開發 >C++ >匿名結構是 C 中的標準嗎?

匿名結構是 C 中的標準嗎?

Susan Sarandon
Susan Sarandon原創
2024-12-03 08:02:10165瀏覽

Are Anonymous Structs Standard in C  ?

「匿名結構」是 C 的標準嗎?

MSDN 聲稱匿名結構在 C 中是非標準的,但仔細檢查會發現不同的場景。雖然 C 標準定義了“未命名結構”,但它並沒有專門解決“匿名結構”的概念。

定義未命名結構

C 標準允許未命名結構的聲明,也稱為匿名結構。這些結構沒有名稱,通常用作其他結構中的嵌套類型。以下程式碼片段示範了一個未命名的結構:

此程式碼在 Foo 結構中定義了一個未命名的結構。未命名結構由兩個成員組成:hi 和 bye。

存取匿名結構的成員

標準 C 允許使用點運算子存取未命名結構的成員。例如,在前面的範例中,可以如下存取hi 成員:

匿名結構與「未命名結構為成員」

While C 03和C 11 沒有明確提及“匿名結構”,即訪問未命名結構成員的現象,就好像它們是父結構的成員,沒有具體提及。這種行為被稱為“匿名結構作為成員”,並未包含在未命名結構的標準中。

MSDN 的混亂

MSDN 似乎錯誤地將未命名結構與匿名結構作為成員。雖然未命名結構是標準的,但作為成員的匿名結構是某些編譯器(例如 GCC 和 Visual C)支援的非標準功能。

結論

總之,雖然匿名結構作為成員在 C 中不是標準的,標準完全支持未命名結構。術語「未命名結構」和「匿名結構」指的是不同的概念,後者指的是訪問未命名結構的成員的非標準行為,就好像它們是父結構的成員一樣。

以上是匿名結構是 C 中的標準嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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