我正在处理一个非常大的代码库,最近升级到 GCC 4.3,现在会触发此警告:
warning: deprecated conversion from string constant to ‘char*’
显然,解决这个问题的正确方法是找到每个声明,如
char *s = "constant string";
或函数调用如:
void foo(char *s);
foo("constant string");
并使它们成为 const char
指针。但是,这意味着至少要接触 564 个文件,这不是我目前希望执行的任务。现在的问题是我正在运行 -Werror ,所以我需要一些方法来扼杀这些警告。我该怎么做?
最佳答案
您将字符串文字 "I am a string literal"
传递到其中的任何函数都应使用 char const *
作为类型,而不是 char*
.
如果您要修复某些问题,请正确修复它。
说明:
您不能使用字符串文字来初始化将被修改的字符串,因为它们的类型是 const char*
。抛弃常量以稍后修改它们是undefined behaviour ,因此您必须按顺序将 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;
}
关于c++ - 如何摆脱 GCC 中的 `deprecated conversion from string constant to ‘char*’ `警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59670/