Bil*_*low 7 c gcc clang segmentation-fault gcc-warning
我很惊讶这个编译没有任何警告:
int main()
{
*"abc" = '\0';
}
Run Code Online (Sandbox Code Playgroud)
用gcc main.c -Wall -Wextra和clang main.c -Weverything.
为什么没有这个警告?有没有办法不会引起分段错误?
您可以使用-Wwrite-strings在 GCC 中获取此代码的警告。来自海湾合作委员会文档:
-Wwrite-字符串
编译 C 时,将字符串常量指定为 const char[length] 类型,这样将字符串常量的地址复制到非 const char * 指针时会收到警告。这些警告将帮助您在编译时找到可以尝试写入字符串常量的代码,但前提是您在声明和原型中非常小心地使用 const。否则,只会带来麻烦。这就是为什么我们没有让 -Wall 请求这些警告。
编译 C++ 时,警告不建议使用从字符串文字到 char * 的转换。对于 C++ 程序,此警告默认启用。
“有什么方法可以不引发分段错误吗?” -> 修改字符串文字是未定义的行为。所以任何事情都可能发生,包括不出现段错误。
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |