为什么下面的代码在 C 中可以工作:
int res = pow(2, 3);
printf("%d\n", res);
而另一个则没有?
int a = 2;
int b = 3;
int res = pow(a, b);
printf("%d\n", res);
即使我尝试
double a = 2;
double b = 3;
double res = pow(a, b);
printf("%f\n", res);
I get an
对“pow”的未定义引用
我究竟做错了什么?
当它起作用时,这是因为计算是由编译器本身完成的(并且包含在二进制文件中,就像您将其写出来一样)
printf("8\n");
当它不起作用时,是因为pow
函数包含在数学库中,并且默认情况下数学库不与您的二进制文件链接。
要链接数学库,如果您的编译器是 gcc,请使用
gcc ... -lm ...
与其他编译器,应该是一样的:)
但请阅读文档
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)