我如何通过argc和argv传递以下参数?

时间:2011-07-15 07:15:16

标签: qt

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。

1 个答案:

答案 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);
 }