我有兩個CPU。一個32位和另一個64位。我們有如下所示的片的C++代碼:C++爲32位和64位處理器強制執行對齊的安全
typedef std::bitset<16> MyBits;
typedef struct t_MyStruct_16 {
uint32_t first;
int16_t second;
__attribute__((__aligned__(8))) MyBits st;
} MyStruct_16;
typedef struct t_MyStruct_12 {
uint32_t first;
int16_t second;
MyBits st;
} MyStruct_12;
它是安全的使用sizeof來計算結構的尺寸爲兩個處理器32和64位ΣΔ如果我進行比特式操作,那麼填充的東西是否會影響代碼的行爲?
謝謝。
你什麼意思是安全的?它不會殺了你。 – stark
我在說,如果我舉個例子,從這個bitset st計算出一個Hash,我會得到32和64位的不同結果,還是我會得到相同的結果? – Yore
'sizeof'包含如果您創建對象類型的數組將添加的填充。 – stark