c - 为什么这段代码会产生关于 pow 函数的错误?
问题描述
#include <stdio.h>
#include <math.h>
int exp_for_level(int n) {
return (int)(100 * pow(n, 2.3));
}
int main(){
int x;
x = exp_for_level(6);
printf("%d", x);
return 0;
}
在在线编译器上运行此代码时收到以下错误
/tmp/cc28S7ML.o: In function exp_for_level':
main.c:(.text+0x19): undefined reference to `pow'
collect2: error: ld returned 1 exit status
我该如何纠正这个问题?
在我无法让它在在线编译器上工作之后,我遵循了一些其他线程的建议文件存储在我的 mac 上的文件 grades.c 下我试过输入这个
$ gcc - Wall - lm -o grades grade . c
进入我的终端,我得到了zsh error: command not found
关于这里的问题有什么想法吗?我使用的在线编译器是 https://www.tutorialspoint.com/compile_c_online.php
编辑:在我的帖子中,主要是我将函数误写为 exp_to_level 而不是 exp_for_level。没有复制粘贴整个代码,因为它太长了。我缩小范围并将其重新输入到产生错误的部分。
解决方案
您的代码中有一些错误,您已经定义了一个函数exp_for_level
,但您使用exp_to_level
.
那么你的x
变量没有定义
如果您像这样修复代码:
#include <stdio.h>
#include <math.h>
int exp_for_level(int n) {
return (int)(100 * pow(n, 2.3));
}
int main(){
int x = exp_for_level(6);
printf("%d", x);
return 0;
}
你编译:
gcc -Wall powtest.c -o powtest -lm
有用。
关于在线编译器的错误:
undefined reference
发生错误是因为您缺少链接器-lm
选项。
编辑在线编译器命令,点击Project->Compile Options
:
关于本地机器上的这个问题:
在我无法让它在在线编译器上工作之后,我遵循了一些其他线程的建议文件存储在我的 mac 上的文件 grades.c 下我试过输入这个
$ gcc - Wall - lm -o grades grade . c
进入我的终端,我只是得到 zsh 错误:找不到命令
你没有安装编译器。
你应该安装clang
,看看这个问题
推荐阅读
- highcharts - highcharts:柱形图颜色根据值变化
- python - 将 DF 转换为嵌套列表
- ios - iOS:查找旋转和圆角视图的底部 y 坐标
- python - 遍历目录,直到找到特定的文件夹名称
- python - 如何通过 Odoo API RPC [Odoo11] [python] 插入与发票相关的付款?
- prestashop-1.7 - 更新主题徽标时在 prestashop 1.7.4.2 上出现 500 服务器错误
- c++ - 防止别名重新定义别名 C++
- java - 捕获 Spring 数据异常
- python - 加快从巨大的 csv 文件中删除停用词的速度
- javascript - ReactJs 设置自定义引导复选框的不确定状态