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

时间:2016-07-25 06:26:30

标签: c main

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

  1. 在C中,我们可以通过其他函数调用main()函数。
  2. 在C ++中,我们不能通过其他函数调用main()函数。
  3. 如何从另一个函数调用main()以及它的用例是什么?

1 个答案:

答案 0 :(得分:0)

@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()
}

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