struct T{
char bits: 4; // 3:0
};
和其他人:
struct T{
char bits: 4; // 7:4
};
因为标准没有规定。 (我认为这个(算术意义)应该由标准指定,而实际的物理分配是另一个无法指定的问题。)
但是,我希望我的代码更通用,所以我尝试了:
union helper{
unsigned char b:1;
unsigned char c;
constexpr helper(unsigned char i): c(i){}
};
constexpr int lsb_defined_at_top(){ return helper(1).b;}
enum{
LSB_AT_DEFINED_AT_TOP = lsb_defined_at_top()
};
但编译器(gcc 4.7.2)抱怨:
错误:在常量表达式中访问'helper :: b'成员而不是初始化'helper :: c'成员
我想知道有没有办法在编译时确定这个......