根据
this question中的答案,像L“test”这样的文字类型为wchar_t [5].但是GCC的以下代码似乎有些不同:
int main()
{
struct Test{char x;} s;
s="Test"; // ok, char* as expected
s=L"Test"; // ??? I'd expect wchar_t*
return 0;
}
这是我编译它的方式(gcc 5.2,但4.5和4.8的结果相同):
$gcc test.c -o test -std=c99
test.c: In function ‘main’:
test.c:4:6: error: incompatible types when assigning to type ‘struct Test’ from type ‘char *’
s="Test"; // ok, char* as expected
^
test.c:5:6: error: incompatible types when assigning to type ‘struct Test’ from type ‘long int *’
s=L"Test"; // ??? I'd expect wchar_t*
^
显然,而不是预期的wchar_t数组,我得到long int数组.这有什么不对?
最佳答案 类型wchar_t不是基本类型,如char.它是实现定义的整数type1的同义词.
1(引用自:ISO / IEC 9899:201x 7.19通用定义2.)
wchar_t是一个整数类型,其值范围可以表示所有的不同代码
受支持的语言环境中指定的最大扩展字符集的成员;