我有一个结构,其中包含一个unsigned char[16]
我想初始化为零的字段。以下(高度简化的)代码可以使用 clang(OS X)编译:
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
s,因为第 16 个是字符串文字的零终止符,如果你初始化一个包含太多字节的字符串,clang 会抱怨。
现在,当我尝试使用 GCC 4.5.3 (cygwin) 进行编译时,我得到:
error: incompatible types in assignment of 'const char [16]' to 'unsigned char [16]'
为什么它不起作用,我怎样才能使它起作用?(我显然可以在构造函数中循环遍历数组,但如果可能的话,我想使用初始化列表,我想了解它为什么在一个编译器中工作,而不是在另一个编译器中工作。)