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