我有一个unsigned char[16]
字段的结构,我想初始化为零。下面的(非常简化的)代码编译罚款铿锵(OS X):如何从字符串文字初始化一个unsigned char数组?
struct GUID {
unsigned char bytes[16];
GUID() : bytes("\0\0\0\0""\0\0\0\0""\0\0\0\0""\0\0\0") {};
}
注意我用15个\0
是因为16日是零终止字符串字面量,如果你初始化字符串铛抱怨字节太多。
现在,当我尝试用GCC 4.5.3(Cygwin的)来编译,我得到:
error: incompatible types in assignment of 'const char [16]' to 'unsigned char [16]'
为什么它不工作,我怎样才能使它发挥作用? (我明显可以在构造函数中遍历数组,但我希望尽可能使用初始化列表,但我想知道它为什么在一个编译器中工作,但不是另一个编译器。)
对,这可能是最干净的解决方案,我会做什么。 – jdm 2013-05-05 17:10:45
不,对于您的特殊情况,最好的解决方案是DeadMG的解决方案。 – 2013-05-05 17:15:01
@Haroogan:如果我使用bytes(),数组是否保证填充零? – jdm 2013-05-05 17:32:57