猿问

如何摆脱GCC中从字符串常量到'char *''警告的弃用转换?

如何摆脱GCC中从字符串常量到'char *''警告的弃用转换?

所以我正在开发一个非常大的代码库,最近升级到gcc 4.3,它现在触发了这个警告:

警告:不推荐将字符串常量转换为'char *'

显然,解决这个问题的正确方法是找到每个声明

char *s = "constant string";

或函数调用如:

void foo(char *s);foo("constant string");

并使他们成为const char指针。但是,这意味着触及564个文件,最小,这不是我希望在此时执行的任务。现在的问题是我正在运行-werror,所以我需要一些方法来扼杀这些警告。我怎样才能做到这一点?


www说
浏览 887回答 3
3回答

不负相思意

我相信传递-Wno-write-strings给gcc会压制这个警告。

慕桂英546537

传递字符串文字的任何函数"I am a string literal"都应该char const *用作类型而不是char*。如果你要解决问题,请正确解决问题。说明:您不能使用字符串文字初始化将要修改的字符串,因为它们是类型const char*。虚掷常量性以后修改它们是不确定的行为,所以你要复制你的const char*字符串char通过char到动态分配的char*字符串,以对其进行修改。例:#include&nbsp;<iostream>void&nbsp;print(char*&nbsp;ch);void&nbsp;print(const&nbsp;char*&nbsp;ch)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;std::cout<<ch;}int&nbsp;main()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;print("Hello"); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
随时随地看视频慕课网APP
我要回答