为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
www说 2019-08-06 13:23:44
如何摆脱GCC中从字符串常量到'char *''警告的弃用转换?所以我正在开发一个非常大的代码库,最近升级到gcc 4.3,它现在触发了这个警告:警告:不推荐将字符串常量转换为'char *'显然,解决这个问题的正确方法是找到每个声明char *s = "constant string";或函数调用如:void foo(char *s);foo("constant string");并使他们成为const char指针。但是,这意味着触及564个文件,最小,这不是我希望在此时执行的任务。现在的问题是我正在运行-werror,所以我需要一些方法来扼杀这些警告。我怎样才能做到这一点?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

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


查看完整回答
反对 回复 2019-08-06
?
慕桂英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;}


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 886 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信