调用C++教材示例中square()函数报未声明标识符错误如何解决?
问题根因
C++标准库从未提供过全局的square()函数,无论引入<cmath>还是<math.h>都无法找到该函数,你遇到的undeclared identifier报错属于正常现象。
你参考的《C++程序设计原理》中的相关代码属于教学铺垫内容:作者故意在示例中使用未定义的square()函数,目的是在后续章节引导读者思考自定义函数的概念与实现,这些示例本身就不是可以直接运行的完整代码。
解决方案
- 自行实现
square()函数
你可以在main函数前自行定义平方计算逻辑,修改后的完整可运行代码如下:#include <iostream> #include <cmath> using namespace std; int square(int n) { return n * n; } int main() { for(int x=0; x<10; ++x) { cout<< x << '\t' << square(x) << endl; } } - 使用标准库替代方案
如果你不想自定义函数,也可以使用标准库提供的std::pow()函数实现平方计算,该函数定义在<cmath>头文件中,示例用法为pow(x, 2)。需要注意的是pow()是浮点数运算函数,计算整数平方时会存在微小的精度误差,性能也低于自定义的整数平方实现。
内容的提问来源于stack exchange,提问作者Anubhav Patel
相关产品推荐
相关产品推荐

