C++编译报错‘_cal_order’ was not declared in this scope问题求助
报错原因
C++ 编译器对代码是从上到下顺序解析的,函数在被调用之前必须先被编译器知晓(要么提前声明、要么提前定义)。
你当前代码中_cal_order函数的完整定义写在了main函数之后,main中调用_cal_order时编译器还没有识别到该函数的存在,因此抛出not declared in this scope的编译错误。
两种可行解决方法
- 方法1:在main函数之前添加函数前置声明
只需要在using namespace std;之后、main函数定义之前,添加如下一行函数声明,告知编译器该函数的存在即可,原有函数实现位置可以保持不变:double _cal_order(double p, int n, double l); - 方法2:调整函数定义顺序
直接把_cal_order的完整实现代码移到main函数的前面,保证调用时编译器已经读取过该函数的定义。
额外注意点
你代码中main函数、_cal_order函数定义末尾的分号是多余的,C++标准中函数定义结尾不需要添加分号,建议删除避免不必要的编译警告。
内容的提问来源于stack exchange,提问作者Stacey
相关产品推荐
相关产品推荐

