如何在不收到编译器警告的情况下初始化char * args []

时间:2014-05-24 07:01:05

标签: c++

编译器抱怨以下一行。

char* args[] = {"/bin/bla.py", "-h"};

错误是:

deprecated conversion from string constant to 'char*'

我正在使用-Werror=write-strings进行编译,所以我知道如何停止此错误; 但我希望看到我做错了什么以及如何阻止警告?

谢谢,

1 个答案:

答案 0 :(得分:8)

更改为char const *args[]。如果您不打算更改此表中的字符串,请使用

char const *const args[] = { ....

write-strings错误表示您的代码出错。您的代码是合法的但不好的做法。这是不好的做法,因为字符串文字包含const char,因此写入它们将是未定义的行为。使指针指向const char s意味着如果您尝试写入它们,则会收到编译器消息。