c++ - 如何在 C++ 中初始化 char* const argv []

标签 c++ c

API 函数接受类型为“char *const argv[]”的参数 我正在我的 C++ 应用程序中初始化这种类型的参数,例如:

char* const  argv[] = {"--timeout=0", NULL}; 

并将参数传递给 API 函数,例如:

Spawner spawner;
spawner.execute (argv, true);

使用 g++ 编译器,出现以下错误:

error: deprecated conversion from string constant to 'char*' [-Werror=write-strings]

我怎样才能摆脱上述错误?

下面是API中execute函数的声明:

void Spawner::execute (char *const argv[], bool bShowChildWindow)

最佳答案

是的,C++ 对 const 字符严格得令人讨厌(但正确)。试试这个

char timeoutString[] = "--timeout=0";    // make a non-const char array
char *argv[] = { timeoutString, NULL };
Spawner spawner;
spawner.execute( argv, true );

从技术上讲,问题出在 execute 方法的声明上,应该是

void Spawner::execute (const char *const argv[], bool bShowChildWindow)

假设 execute 不会修改字符串或数组。

关于c++ - 如何在 C++ 中初始化 char* const argv [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338321/

相关文章:

c++ - Qt - 更改 GridLayout 中 QTextBrowser 的文本

c++ - 将状态枚举的全局更改为函数中的 int 值

c - 崩溃期间未捕获 SIGSEGV 信号

c++ - Opencv 函数只能以 C 代码方式调用,不能以 C++ 方式调用

c++ - 多线程暴力破解密码算法

c++ - 类内的前向声明(不是嵌套类)

c++ - Jenkins 中的文件差异与 ClearCase

c - 信号量模拟程序: Segmentation Fault error

使用公式速度=距离/时间计算时间

c - 动态链接库相互依赖时的链接顺序问题