所以我正在开发一个非常大的代码库,最近升级到gcc 4.3,它现在触发了这个警告:
警告:不推荐将字符串常量转换为'char*'
显然,解决这个问题的正确方法是找到每个声明
char *s = "constant string";
Run Code Online (Sandbox Code Playgroud)
或函数调用如:
void foo(char *s);
foo("constant string");
Run Code Online (Sandbox Code Playgroud)
并使他们成为const char指针.但是,这意味着触及564个文件,最小,这不是我希望在此时执行的任务.现在的问题是我正在运行-werror,所以我需要一些方法来扼杀这些警告.我怎样才能做到这一点?
如果我声明并使用这样的指针:
int counter;
char *pCow = "pCow goes MOO";
for(counter = 0; counter < 14; counter++)
printf("%c", pCow[counter]);
Run Code Online (Sandbox Code Playgroud)
它显示整个字符串并且工作,是的,并且有很多欢乐.
但是,如果我使用这样的初始化器:
int counter;
char *pCow = {'p','C','o','w',' ','g','o','e','s',' ','M','O','O','\0'};
for(counter = 0; counter < 14; counter++)
printf("%c", pCow[counter]);
Run Code Online (Sandbox Code Playgroud)
程序崩溃了,pCow拒绝为我的享乐主义乐趣而呻吟!
3 Warnings. 0 Errors
line 11 (near initialization for 'pCow') [enabled by default] C/C++ Problem
line 11 excess elements in scalar initializer [enabled by default] C/C++ Problem
line 11 initialization makes pointer from integer without a cast [enabled by default] C/C++ Problem …Run Code Online (Sandbox Code Playgroud)