程序入口点-如何从C中的其他函数调用main()



我正在研究C和C++的差异,发现了一个棘手的问题。你能详细说明以下几点吗:

  1. 在C中,我们可以通过其他函数调用main()函数
  2. 在C++中,我们不能通过其他函数调用main()函数

如何从另一个函数调用main(),它的用例是什么?

@TrevorHickey一针见血(他的答案在哪里?)-C++禁止从不同的函数中调用main(有充分的理由)。。。并不是说任何编译器都可能阻止你(我想他们大多数人都不在乎)。

一个明显的解决方法是将main的功能转移到一个容器函数中,并从那里调用它,正如@KlasLindbäck所建议的那样。

int my_application(int argc, char const * argv[]) {
   // do stuff
   return 0;
}
int main(int argc, char const * argv[]) {
   return my_application(argc, argv);
}

另一个";破解";这可能只是因为编译器允许您无论如何调用main(正如@KlasLindbäck在评论中指出的那样),即使用函数指针。即

int main(int argc, char const * argv[]) {
   // do stuff
}
// shouldn't compile... but hey, you never know.
int (*prt_to_main)(int, char const* argv[]) = main;
void test_run(void) {
   prt_to_main(0, NULL);
}

相关内容

  • 没有找到相关文章

最新更新