【发布时间】:2014-01-08 07:13:48
【问题描述】:
这个问题不是问题的重复:deprecated-conversion-from-string-literal-to-char
但是,是的,我正试图摆脱这个烦人的 Clang 警告。在那个答案中有以下几种方式:
- const_cast 或 (char*)
- foo(char*) -> foo(const char*)
我也在warning-deprecated-conversion-from-string-constant-to-'char'找到了一些解决方案
- strcpy
- -Wno-write-string
我的另一个问题是:
如何在 Xcode 中设置 -Wno-write-string?或者实际上在 Clang 中是否有这样的标志,就像在 gcc/g++ 中一样?我在Clang Flag Ref没有找到它
在我的代码中,我得到了定义为 foo(char*) 的函数,它们在一段时间内接收字符串或 char*,并在其他时间接收文字字符串(例如“hello”)。对于这种情况,decl/def foo 的正确方法是什么?
【问题讨论】:
-
简单,取参数为
const char*。并且无法想象你为什么会有第二个想法。 -
@jrok 为什么不
const std::string&? -
如果您的函数将字符串文字作为可能的参数,这意味着它不会更改它自己的字符串。所以把它当作
const char*是有道理的。 -
@jrok sry 但你错过了重点,有一段时间给定的参数是 char*,其他时候它是文字的。如果我只是简单地更改为
const char*,那么char*的现有数十个使用呢 -
@rozina 我不得不承认我得到的原始代码在这个功能上存在一些设计问题。它可以同时采用字符串文字和 char* 作为可能的参数
标签: c++ xcode clang string-literals gcc-warning