【发布时间】:2019-10-31 07:12:07
【问题描述】:
为什么下面的代码没有引发警告?
使用 -Wall、-Wpedantic、-Wextra 编译,它们都不会引发警告。
int main()
{
const char *p;
char a[] = "hey";
p = a;
(void) p;
return 0;
}
我希望得到某种警告,例如 assignment -Wdiscarded-qualifiers
【问题讨论】:
-
提示:content 是常量还是指针本身?
-
您认为哪一行有问题?
-
你认为哪个限定词被丢弃了,在哪里被丢弃?
-
a用"hey"中的字符初始化。a然后是完全可变的。在p = a中没有忽略const。您只是无法将a更改为p。(void)p;只是为了抑制p的-Wunused警告(因为它被分配了一个值但从未使用过)。