gpt4 book ai didi

char * 设置为字符串文字时的编译器警告

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:35 25 4
gpt4 key购买 nike

在我的代码中有

char* s = strchr(first,'/');
if(s==NULL) s = "";
else s = s+1;

但是我的 gcc 编译器在倒数第二行提示

warning: assignment discards qualifiers from pointer target type

据我对 ANSI C 的了解,这是因为我将 s(非常量值)设置为字符串文字(常量值)。 (我在这里错了吗?)但是我需要 s 是非常量(因为我可能通过向它加 1 来更改它的值),而且我还需要将 s 设置为空字符串文字。在更好的代码设计方面,我是否有任何选择来实现这两个目标而无需编译器大喊大叫?

我确实启用了 -Wwrite-strings 标志。

最佳答案

如果你想写:

char * s = "Red";
if (Massachusetts) {
s = "Blue";
}

然后只需添加常量。它会正常工作。

如果你真的需要修改字符串,那么

char *s = malloc(64);
strcpy (s, "Red");
if (Massachusetts) {
strcat(s, "-not");
}

关于char * 设置为字符串文字时的编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com