首页 > 解决方案 > 从 const char 指针到 char 指针的赋值不给出警告

问题描述

为什么以下代码不会引发任何警告?

使用 -Wall、-Wpedantic、-Wextra 编译,它们都没有发出警告。

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

我期待某种警告,例如 assignment -Wdiscarded-qualifiers

标签: cpointerscharconstants

解决方案


您正在a分配char * a const char *。这是安全的,因为您添加了const限定符,而不是删除它。

如果你这样做:

char *p;
const char a[] = "hey";
p = a;

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


推荐阅读