看板 C_and_CPP 關於我們 聯絡資訊
: Common.c: : #include <math.h> : float Common_GetNorm(float* var, unsigned int n) { : int i; : double sum = 0.f; : for (i=0; i<n; ++i) { : sum += var[i]*var[i]; : } : return sqrtf(sum); : } : main.c: : #include <stdio.h> : int main(void) { : float acc[3]; : acc[0] = 0.01; : acc[1] = 0.01; : acc[2] = 1.01; : float a = Common_GetNorm(acc, 3); : printf("%f\n", a); : } 關鍵是在於 main.c 裡面沒有宣告 Common_GetNorm 這個函式就使用了。 所以 Common_GetNorm 在編譯 main.c 的時候會被當作是回傳 int 型別的函式 從 main 的角度他得到的是個 int,但是實際上他得到的是個 float 接著就要看你使用的平台中,用 int 型別去解釋 float 值的結果 你只要在 main 前加上 Common_GetNorm 的宣告就可以了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.83.198 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1441978711.A.4CB.html
wtchen: 感謝,因為以前都用int函式,所以不知道有此問題 09/11 22:04
qeagle: 原來要先宣告啊.....,我也不知道 09/12 22:09