我發現沒有任何命名成員的結構(據我所知,特別是沒有任何成員)在 C 中呼叫UB。只有 GNU GCC支持這樣的結構作為擴展。我試圖創建一段代碼,當使用 GCC 與 Clang 編譯時,它的行為會有所不同,但沒有成功。我想知道是否有一個 C 程式,如果你通過 Clang 編譯它,它的作業方式與使用 GCC 編譯的不同。簡而言之,相反的選擇是 Clang 也支持空結構,但這在檔案中沒有提到。
uj5u.com熱心網友回復:
從字面上看,我在 clang 的檔案中唯一能找到的是一些關于警告的資訊-Wgnu-empty-struct,它將在-pedantic模式下被激活。所以編譯器顯然支持 GNU 空結構。
至于在哪里可以找到關于如何使用空結構、它們有什么好處以及它們在哪些語言標準下有效的 clang 檔案,我不知道。
uj5u.com熱心網友回復:
為了完整起見,正如 Lundin 所寫,Clang 支持空結構。
我想知道是否有一個 C 程式,如果你通過 Clang 編譯它,它的作業方式與使用 GCC 編譯的不同。簡而言之,相反的選擇是 Clang 也支持空結構,但這在檔案中沒有提到。
未定義的行為意味著它是未定義的。即使 clang 編譯器不支持空結構,它也可以將二進制代碼生成為 gcc。要非常小心地從行為中得出結論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524591.html
標籤:C海合会铛未定义行为
下一篇:C-While回圈不應該運行兩次
