无论是使用GCC还是Clang,即使在使用许多严格的选项(例如-Wall -W -pedantic -std=c99
)时,我将字符串文字赋给一个char*
也不会出现警告:
char *foo = "bar";
当我将 const char*
赋值给 char*
时,他们(当然)会抱怨。
这是否意味着字符串字面值被认为是 char*
类型?它们不应该是 const char*
吗?如果它们被修改了,那就不是定义行为!
还有一个无关的问题,命令行参数(例如: argv
)又是怎样的呢?它被认为是字符串字面值数组吗?