C++两个互相调用的函数出现未声明错误该如何解决?
问题产生原因
C++编译器采用从上到下的逐行解析规则,函数必须在被调用前完成声明,才能被编译器识别为合法调用对象。
你提供的代码中,input() 函数的定义位置早于 Table() 函数,当编译器解析到 input() 内部的 Table() 调用语句时,还没有读取到后面的 Table() 函数定义,因此会抛出Table未声明的报错。
修复方案
只需要在两个函数定义前,增加两个函数的前向声明即可,前向声明只需要标注函数返回值类型、函数名、参数列表,不需要写函数实现,告诉编译器这两个函数是真实存在的即可。
修复后的完整代码如下:
#include <iostream> using namespace std; // 前向声明两个函数 void input(); void Table(); void input(){ Table(); } void Table(){ input(); } int main(){ input(); Table(); }
额外提示:当前代码逻辑为两个函数无限递归互相调用,实际运行时会很快触发栈溢出导致程序崩溃,业务场景使用时需要补充递归终止的判断条件。
内容的提问来源于stack exchange,提问作者Leex Evans
相关产品推荐
相关产品推荐

