簡體   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