如何摆脱GCC中从字符串常量到'char *''警告的弃用转换?所以我正在开发一个非常大的代码库,最近升级到gcc 4.3,它现在触发了这个警告:警告:不推荐将字符串常量转换为'char *'显然,解决这个问题的正确方法是找到每个声明char *s = "constant string";或函数调用如:void foo(char *s);foo("constant string");并使他们成为const char指针。但是,这意味着触及564个文件,最小,这不是我希望在此时执行的任务。现在的问题是我正在运行-werror,所以我需要一些方法来扼杀这些警告。我怎样才能做到这一点?
3 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
传递字符串文字的任何函数"I am a string literal"
都应该char const *
用作类型而不是char*
。
如果你要解决问题,请正确解决问题。
说明:
您不能使用字符串文字初始化将要修改的字符串,因为它们是类型const char*
。虚掷常量性以后修改它们是不确定的行为,所以你要复制你的const char*
字符串char
通过char
到动态分配的char*
字符串,以对其进行修改。
例:
#include <iostream>void print(char* ch);void print(const char* ch) { std::cout<<ch;}int main() { print("Hello"); return 0;}
- 3 回答
- 0 关注
- 886 浏览
添加回答
举报
0/150
提交
取消