我在另一个函数内部有两个互相调用的函数:
int main(){
void aaa();
void b(){
aaa();
}
void aaa(){
b();
}
aaa();
}
(是的,此示例将陷入无限循环或导致堆栈溢出)
编译器抛出错误:static declaration of 'aaa' follows non-static declaration
如果我将函数声明移到另一个函数之外,它就可以工作(但是我不能这样做,因为那些函数需要访问main
的局部变量)
有可能做这项工作吗?
答案 0 :(得分:0)
C不支持嵌套函数,也不支持闭包。
解决您实际问题的一种方法是将共享状态(在这种情况下,您提到的main的局部变量)定义为struct,然后具有此struct类型的变量,并将其作为使用它的函数的指针传递
您没有在问题中显示局部变量代码,因此我没有在写任何示例。如果需要示例,请使用更多代码编辑问题。
另一种解决方案是只使用全局(最好是静态)变量,该变量在其他函数和main中都使用。我的意思是,由于main不是正常函数(例如,不能通过标准递归调用),所以它的局部变量无论如何最终都是唯一的对象,所以这只是范围和可见性的问题,几乎没有功能差异。