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/