如何从C中的其他函数调用main()

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

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

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

@TrevorHickey击中头部(他的答案在哪里?) – C ++禁止在一个不同的函数中调用main (有充分的理由)……并不是说任何编译器都可能阻止你(我不认为他们关心)。

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

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

另一个“黑客”可能只是因为编译器允许你调用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); }