相关疑难解决方法(0)

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

所以我正在开发一个非常大的代码库,最近升级到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,所以我需要一些方法来扼杀这些警告.我怎样才能做到这一点?

c++ string gcc

401
推荐指数
11
解决办法
41万
查看次数

为什么我可以在使用双引号声明时将指针用作字符串,而不是在C中使用花括号?

如果我声明并使用这样的指针:

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)

c string pointers

28
推荐指数
2
解决办法
1413
查看次数

标签 统计

string ×2

c ×1

c++ ×1

gcc ×1

pointers ×1