在 C 中以编程方式调用 main(int argc, char **argv)
Posted
技术标签:
【中文标题】在 C 中以编程方式调用 main(int argc, char **argv)【英文标题】:Programmatically calling main(int argc, char **argv) in C 【发布时间】:2020-07-08 21:22:36 【问题描述】:假设我有一个文件test.c
,它接受一个文本文件并开始如下:
int main(int argc, char **argv)
...
return 0;
我通常会按如下方式编译文件并执行二进制文件:./test input.txt
。
现在,我希望在同一个文件的另一个函数中以编程方式调用main
函数。我应该如何进行?
【问题讨论】:
为什么要调用main
函数?这几乎肯定是实现您想要做的任何事情的错误方法。
别这样!无论您想要做什么,都应该是一个从 main() 调用的单独函数,以及您想从其他任何地方调用它的...
您是否可以选择创建一个单独的程序(带有自己的main()
)来调用这个程序?或者可能只是一个脚本/批处理?
请注意,您根本不允许调用 main()
in C++ — 但在 C 中调用它是合法的,尽管这样做是非正统的,除非在 IOCCC(国际混淆C 代码竞赛)。
【参考方案1】:
你可以这样做:
#include <stdio.h>
int main(int argc, char *argv[]);
void func()
char *argv[] = "./test", "another.txt", NULL ;
main(2, argv);
int main(int argc, char *argv[])
if (argc > 1)
printf("Processing %s...\n", argv[1]);
/* ... */
func();
return 0;
这应该输出如下内容:
Processing input.txt...
Processing another.txt...
小心无休止的递归!
【讨论】:
我特别关注如何传递您提供了一个清晰示例的第二个参数。谢谢!以上是关于在 C 中以编程方式调用 main(int argc, char **argv)的主要内容,如果未能解决你的问题,请参考以下文章
c编程中main函数中使用了库文件中定义的函数,编译时却提示该函数未定义,这是啥问题,坐等高手解答
c编程中main函数中使用了库文件中定义的函数,编译时却提示该函数未定义,这是啥问题,坐等高手解答
在 TableViewHeader 中以编程方式调用 IBAction
是否可以在 Dynamics CRM (2013/2016) 中以编程方式禁用审核?
在 SWIFT 2.x 中以编程方式使用 NavigationController 调用 UIViewController