繁体   English   中英

为什么此代码会产生关于 pow function 的错误?

[英]Why does this code yield an error with regards to the pow function?

#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

编辑:在我的帖子中,主要是我将 function 误写为 exp_to_level 而不是 exp_for_level。 没有复制粘贴整个代码,因为它太长了。 我缩小范围并将其重新输入到产生错误的部分。

您的代码中有一些错误,您定义了 function 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 linker 选项。

单击Project->Compile Options编辑在线编译器命令:

编译选项

关于本地机器上的这个问题:

在我无法让它在在线编译器上工作之后,我遵循了一些其他线程的建议文件存储在我的 mac 上的文件 grades.c 我试过输入这个

$ gcc - Wall - lm -o grades grade. c

进入我的终端,我只是得到 zsh 错误:找不到命令

你没有安装编译器。

你应该安装clang ,看看这个问题

首先,您的 function 名称在主中是错误的,请看这里exp_for_level并在 main 中将其exp_to_level更改其中一个,然后在 main 中添加int x以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM