我正在尝试理解这段代码:
char * pl[] = {"test.sh", NULL};
execv("./test.sh", pl);
这将从c程序执行我的脚本,但这不会:
execv("./test.sh", ["test.sh", NULL]);
这会发出错误消息:
错误:在'['标记
之前的预期表达式
这也不起作用:
execv("./test.sh", (char *) ["test.sh", NULL]);
同样的错误......
这里发生了什么?
我显然误解了char * []
声明类型。我应该能够投射阵列吗?我可以把它变成一行代码吗?
我不理解{},我如何将此位传递给此代码段的最终目标函数?
答案 0 :(得分:2)
您可以使用复合文字:
execv("./test.sh", (char*[]){"test.sh", NULL});
这仅适用于C99及更高版本。