我想在此处手动发送值
void processArgs(int argc, char** argv);
如果我这样发送
char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};
parser->processArgs(2, cwd);
编译器显示警告为
警告:ISO C ++禁止将字符串常量转换为“ char *” [-Wwrite-strings]
char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};
答案 0 :(得分:4)
其他人注意到,问题是您正在尝试将字符串文字(常量)传递给采用非常量char **
参数的函数。如果要创建可传递给非常量arg函数的非常量字符串,则需要显式的char数组(可以使用字符串文字进行初始化):
char arg0[] = "./comDaemon";
char arg1[] = "--loggg=pluginFramework:debug";
char *cwd[] = { arg0, arg1 };
您甚至可以在一行上完成所有操作:
char arg0[] = "./comDaemon", arg1[] = "--loggg=pluginFramework:debug", *cwd[] = { arg0, arg1 };
答案 1 :(得分:3)
如果您要传递cwd
的函数期望使用char **
参数,而不是const char **
,则有以下一种方法:
char *cwd[] = { const_cast<char *>("value1"), const_cast<char *>("value2") };