使用匿名結構/聯合編譯C 程式碼
出現如何使用匿名結構或聯合編譯C 程式碼的問題,如C 具有使用聯合的匿名欄位。在 C 中,嘗試使用包含匿名聯合的命名結構建立類似的結構會導致編譯錯誤。
錯誤訊息表示匿名聯合和結構欄位未在結構聲明中聲明。要在 C 中啟用此功能,需要使用 -fms-extensions 編譯器標誌。
使用-fms-extensions 修改程式碼
<code class="c">#include <stdio.h> #include <assert.h> typedef struct { union { float x, y, z; } xyz; } Vector3; int main() { Vector3 v; assert(&v.xyz.x == &v.x); assert(&v.xyz.y == &v.y); assert(&v.xyz.z == &v.z); return 0; }</code>
使用此修改後,程式碼將成功編譯,並且斷言將通過,確認聯合體成員和結構體字段的位址是等效的。
以上是如何使用匿名結構或聯合編譯 C 程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!