c到功能
问题描述:
我试图理解这段代码execv传递参数:c到功能
char * pl[] = {"test.sh", NULL};
execv("./test.sh", pl);
这将执行从交流程序我的剧本,但这不会:
execv("./test.sh", ["test.sh", NULL]);
这提供了一个错误信息:
error: expected expression before '[' token
这不起作用或者:
execv("./test.sh", (char *) ["test.sh", NULL]);
完全相同的错误...
这到底是怎么回事?
我显然误解了char * []
声明类型。我应该能够投射阵列吗?我可以把这一行代码?
我不理解的{},我怎么会变成这样有点传递给一个函数,它是此代码段的最终目标?
答
您可以使用文字的化合物:
execv("./test.sh", (char*[]){"test.sh", NULL});
这是C99和更高版本。
C不是Python的 - 或Perl或C++或Java或C#,或...如果你选择尝试在C代码其他语言的符号,指望他们不工作,或者工作方式不同。你需要阅读一本关于C的书来理解语言及其语法。 –
@Jonathan莱弗勒我从来没提过比C. execv其他任何编程语言想要一个'char * const的的argv []',我问如何在参数execv使用。 “读一本书”并不回答这个问题。我已看过一些包括ANSI C.我没记住但是整体水平......过失 – posop
周围使用的参数列表方括号中的符号是不是一个人谁只在C代码会拿出。我提到的一些语言确实支持这种符号,所以我推断您已经知道至少有一种其他语言,并且该语言不是Pascal,Algol,Fotran,COBOL,Basic,Modula-3,...。 –