如何从C中的其他函数调用main()
我正在经历C和C ++的差异,我发现了一个棘手的问题。 能否详细说明以下几点:
- 在C中,我们可以通过其他函数调用
main()
函数。 - 在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); }