问题很简单。给定如何设置位域成员的所有位为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;'是什么? –