比方說,我需要存儲8級的bool在一個結構,但我想他們只使用1個字節在一起,然後我可以做這樣的事情:作爲位域的C++布爾數組?
struct myStruct {
bool b1:1;
bool b2:1;
bool b3:1;
bool b4:1;
bool b5:1;
bool b6:1;
bool b7:1;
bool b8:1;
};
以及與此我可以做的事情一樣
myStruct asdf;
asdf.b3=true;
asdf.b4=false;
if(asdf.b1)
...
到目前爲止這是否正確? (我不知道它實際上,我從來沒有使用位域之前)
好 - 但它也有可能創建一個8布爾靜態數組,使他們將只使用8位,但我仍然可以地址他們通過索引?
像
struct myStruct {
public:
bool b[8]:8;
};
可能? (與此,我得到一個錯誤C2033)
感謝您的幫助!
如果我的研究是正確的,bitset使用至少4個字節 – Mat 2009-11-20 19:10:47
作爲T.E.D.指出,在考慮到對齊問題時,任何數據結構都會佔用32位的可能性很大。 – 2009-11-20 19:24:33
有一些很好的鏈接來解釋另一個問題中的對齊問題:http://stackoverflow.com/questions/381244/purpose-of-memory-alignment – 2009-11-20 19:59:26