所以我有一個完全由以下組成的資料結構:
unsigned char即位元組大小的屬性bool_T我有typedefd tounsigned char(if C) 或 tobool(if C ) 所以又是位元組大小的- 包含不超過 5 個條目的列舉,因此也應該是位元組大小的。
但是,Qt Creator 在每個 旁邊enum放置一個分析前假設警告(符號是一個黃色三角形,它是空的 - 只有它的輪廓)關于用一些位元組填充資料結構,我收集的目的是對齊結構中的下一個元素。
這有什么意義,因為這是(或應該是)所有位元組?我enum的 s 不是位元組嗎?我可以強制編譯器使它們成為位元組嗎?我可以強制編譯器在某些情況下不對齊,還是 C 標準禁止這樣做?
更多資訊:我正在撰寫 C89,使用 Qt 5.12.11、Qt Creator 4.15.0(基于 Qt 5.15.2)、帶有 Ninja 1.10.2 的 CMake 3.19.4 并使用 minGW/gcc 7.3.0 進行編譯。
謝謝 !
uj5u.com熱心網友回復:
現在的 C 有可能指定an的底層型別enum,但這是相當新的(C 11,不是 C99,更不用說 C89)。所以不,你不能假設它是一個位元組,也不能直接強制它。但是您可以使用位域(:3最多可容納 8 個值)
此外,bool在 C 中,定義不是位元組大小的;它可以更大。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430165.html
