我有一个结构体,其中包含一个unsigned char[16]
类型的字段,我想将其初始化为0。以下是(大大简化后的)代码,在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
,因为第16个是字符串字面值的零终止符,如果你用过多的字节初始化一个字符串,clang会抱怨。现在,当我尝试使用GCC 4.5.3(cygwin)编译时,我得到以下错误:
error: incompatible types in assignment of 'const char [16]' to 'unsigned char [16]'
为什么它不能工作,我该如何让它工作?(显然,我可以在构造函数中循环遍历数组,但如果可能的话,我想使用初始化列表,并且我想了解为什么它在一个编译器中可以工作,而在另一个编译器中却不行。)