我尝试使用
为什么第二个初始化会引发错误“pointer targets in initialization differ in signedness”,而其他两个声明是允许的?
看起来在第二种情况下,从char *到unsigned char *的隐式转换没有完成。
gcc -Wall -pedantic-errors -std=c89
编译以下代码:int main(){
unsigned char a[] = "foo";
unsigned char *b= "foo";
unsigned char *c= ( unsigned char *) "foo";
return 0;
}
为什么第二个初始化会引发错误“pointer targets in initialization differ in signedness”,而其他两个声明是允许的?
看起来在第二种情况下,从char *到unsigned char *的隐式转换没有完成。
char*
到unsigned char*
没有 "隐式转换",这就是为什么第二个失败的原因。 - rici