题
我有以下代码: 通用标签
使用“ gcc -Wall -ansi -pedantic”编译确定。但是使用另一个工具链(Rowley),它抱怨 通用标签
char ** t所在的行。这确实是非法代码还是可以吗?
感谢所有答案。我现在知道我的问题在哪里。但是,它提出了一个新问题:
解决方案
对我来说似乎完全合法;char *[3]
衰减为char **
,因此该分配应该有效。
GCC 4.4.5和CLang 1.1都没有抱怨。
其他提示
尽管在实践中array1
应该衰减为char **
类型的指针,但其实际类型实际上是char *[3]
,因此发出警告。
要取消显示警告,您可以尝试显式投射警告: 通用标签
array1是(char *)[3]
,在语义上与char **
不同,尽管在赋值时应将其优雅地降级为char **
指针和数组,仅在静态范围内兼容。在全局范围内,指针和数组不相同,将两者混合会导致不确定的行为。因此,我认为该警告是正确的。
尝试放置: 通用标签
在一个模块中: 通用标签
在另一处,编译并链接。(我还没有尝试过……)我希望事情会出错...
不隶属于 StackOverflow