C argc
はintであり、argv
は引数のベクトルです。これが真であれば、その文字列を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);
}
'ivlpp_main()' 'int型ivlpp_mainとして宣言されている(int型のargc、char型** ARGV)':に似た何かを試してみてください? – MSalters
はいivlpp_main()はintとして宣言されています。ivlpp_main(int argc、char ** argv); – imon