static void build_preprocess_command(int e_flag)
{
ivlpp_main(argc, argv);
snprintf(tmp, sizeof tmp, "%s%civlpp %s%s -F\"%s\" -f\"%s\" -p\"%s\" ",
pbase, sep, verbose_flag?" -v":"",
e_flag?"":" -L", defines_path, source_path,
compiled_defines_path);
}
我想将ivlpp_main()中的snprintf参数传递为argc或argv。
答案 0 :(得分:0)
在C argc
中是int,argv
是参数的向量。如果在此处为true,则只能在argv中传递该字符串。
但是,您应该确定整个字符串是单个参数还是包含主函数的多个参数。请对此进行评论,我将为该案例添加答案。
编辑:然后你必须将它们中的每一个添加到数组中。尝试类似的事情:
static void build_preprocess_command_and_run(int e_flag)
{
char **argv;
int argc, arg;
argc = 7; /* you have 6 args maximum plus one NULL at the end */
argv = calloc(argc, sizeof(argv[0]));
arg = 0;
snprintf(argv[arg++], strlen(pbase) + 2 + strlen("ivlpp"), "%s%ccivlpp", pbase, sep);
if (verbose_flag) {
argv[arg++] = "-v";
}
if (!e_flag) {
argv[arg++] = "-L";
}
snprintf(argv[arg++], strlen(defines_path) + 1, "-F\"%s\"", defines_path);
snprintf(argv[arg++], strlen(defines_path) + 1, "-f\"%s\"", source_path);
snprintf(argv[arg++], strlen(defines_path) + 1, "-f\"%s\"", compiled_defines_path);
ivlpp_main(argc, argv);
}