問題很簡單。給定如何設置位域成員的所有位爲1
struct Foo{
bool : 1;
bool : 1;
int bar : sizeof(int) * 8 - 2;
};
如何將bar的所有位設置爲1而不發出警告?
很顯然,我可以做auto v = Foo(); v.bar = ~0;
但GCC給了我這樣的:
warning: large integer implicitly truncated to unsigned type [-Woverflow]
我已經嘗試了幾種方法,但它總是呈現一個警告...
爲什麼你需要一個位場? (順便說一下,不能保證你的結構不會包含太多的bool和int)。 – StoryTeller
M.b.你可以使用memset()? – voltento
'v.bar = UINT_MAX;'是什麼? –