我有一个类似于以下内容的代码:
int main()
{
'some
code'
motors();
}
int motors()
{
if (condition)
{
'some
code'
main();
}
else if (condition)
{
'some
code'
main();
}
else
{
main();
}
}
我该怎么做才能防止一遍又一遍地调用 main?我可以制作另一个包含 main 代码的函数吗?
调用main
是C++中未定义的行为。您可以将最初在main
中的所有函数包装到另一个函数中。
int main()
{
wrapper();
}
void wrapper()
{
//code originally in main
}
每当您需要调用main
时,请改为调用此包装器。
int motors()
{
if (condition)
{
wrapper();
}
有一个简单的避免递归调用函数的方法:不要这样做!事实上,很少需要从程序内部调用main
,我认为通常应该不惜一切代价避免它(除了"聪明的黑客",例如 IOCCC 中使用的那些)。
相反,您应该使用循环:
int main()
{
for (;;)
{
some_code_that_calls_motors();
}
}
然后只需从函数和调用调用链返回,直到您回到main
并且循环重新开始。