【发布时间】:2012-02-16 04:40:32
【问题描述】:
在我的代码中
char* s = strchr(first,'/');
if(s==NULL) s = "";
else s = s+1;
但我的 gcc 编译器在倒数第二行抱怨
warning: assignment discards qualifiers from pointer target type
根据我对 ANSI C 的理解,这是因为我将 s(一个非常量值)设置为字符串文字(一个 const 值)。 (我错了吗?)但是我需要 s 是非常量的(因为我可能会通过向其添加 1 来更改它的值),并且我还需要将 s 设置为空字符串文字。在没有编译器大喊大叫的情况下,我有什么更好的代码设计选项来实现这两个目标吗?
我确实启用了 -Wwrite-strings 标志。
【问题讨论】:
-
真的很难说。再来点代码怎么样?你想做什么?您只是想将其指向其他地方还是要修改 strchr 返回的字符串?
-
您打算对空字符串进行哪些修改?
-
'然而我需要 s 是非常量' 为什么?
-
@Chris:查看我在上面所做的编辑以了解原因。