我想做一個簡單的函數,涉及sqrt()
,floor()
和pow()
。所以,我包括了<math.h>
。當我嘗試使用我的功能時,我的程序說sqrt()
和floor()
不存在。我三重檢查了我的文件並重寫了它們,但它仍然給出了相同的錯誤。只是爲了檢查<math.h>
目錄是否有任何問題,我做了另一個單獨的文件,計算出相同的結果,並且它的工作。我現在無能爲力。我究竟做錯了什麼?包含文件C
非運作程序的代碼:
#include <math.h>
#include "sumofsquares.h"
int sumofsquares(int x){
int counter = 0;
int temp = x;
while(temp != 0){
temp = temp - (int)pow(floor(sqrt(temp)), 2);
counter ++;
}
return counter;
}
工作測試文件:
的錯誤是這樣
/tmp/ccm0CMTL.o:在功能sumofsquares': /home/cs136/cs136Assignments/a04/sumofsquares.c:9:undefined reference to sqrt' /home/cs136/cs136Assignments/a04/sumofsquares.c:9:未定義 參考地板」 collect2:LD返回1退出status`
我在虛擬的Ubuntu操作系統中使用runC編譯
什麼是確切的錯誤?你如何編譯你的程序? – cnicutar 2012-02-22 17:07:10
@cnicutar:錯誤是這個'/tmp/ccm0CMTL.o:在函數'sumofsquares'中: /home/cs136/cs136Assignments/a04/sumofsquares.c:9:undefined對'sqrt'的引用 /home/cs136/cs136Assignments/a04/sumofsquares.c:9:未定義的引用'floor' collect2:ld返回1退出狀態' 我在一個虛擬的Ubuntu操作系統上使用runC來進行complile。 – user1222282 2012-02-22 17:13:37
這是* linkage *問題,而不是* include *問題。通過cnicutar檢查答案。 – karlphillip 2012-02-22 17:17:57