【发布时间】:2010-09-08 17:58:45
【问题描述】:
所以我正在处理一个非常大的代码库,最近升级到 gcc 4.3,现在触发了这个警告:
警告:不推荐将字符串常量转换为‘char*’
显然,解决这个问题的正确方法是找到每个声明,如
char *s = "constant string";
或函数调用如:
void foo(char *s);
foo("constant string");
并将它们设为const char 指针。但是,这意味着至少要接触 564 个文件,这不是我目前希望执行的任务。现在的问题是我正在使用-werror,所以我需要一些方法来扼杀这些警告。我该怎么做?
【问题讨论】:
-
当你来解决替换 554 行时,sed 是一个好朋友。不过请务必先备份。
-
我查看了有关如何抑制错误消息以及正确替换应该是什么的讨论。我对此没有任何意见。但是,我认为马特是在正确的轨道上。定义要替换的内容。您只需要正确的正则表达式。在副本中进行更改。使用“差异”将它们与原始文件进行比较。使用 sed 进行更改快速、简单且免费,而 diff 也快速、简单且免费。试一试,看看您需要查看多少更改。发布您想要替换的内容,并让用户建议正则表达式替换。
-
整个讨论都忽略了为什么这是一个需要根据gcc警告解决的问题。原因在于 David Schwartz 的回答 stackoverflow.com/questions/56522654/…。
-
564 个文件是完全可行的。去做就对了。 (好吧,你现在很可能已经做到了;-))。