从const char指针到char指针的赋值不给出警告

Tom*_*tro 0 c pointers const char

为什么以下代码不发出警告?

与-Wall,-Wpedantic,-Wextra一起编译,并且没有一个发出警告。

int main()
{
    const char *p;
    char a[] = "hey";
    p = a;
    (void) p;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望收到某种警告,例如分配-Wdiscarded-qualifiers

dbu*_*ush 6

你分配一个char * 一个const char *。这是安全的,因为您添加了const限定词,而不是将其删除。

如果您这样做:

char *p;
const char a[] = "hey";
p = a;
Run Code Online (Sandbox Code Playgroud)

然后,您将收到有关丢弃const限定符的警告。