作者apey ()
看板C_and_CPP
標題[問題] pow(3,3) gcc pow.c 不用-lm ,why?
時間Sat Apr 30 23:46:33 2011
小弟在linux底下使用gcc的時候, 遇到問題想要請教大家:
(a).下列這段code編譯需要使用-lm來link libm
#include <stdio.h>
#include <math.h>
int main(void){
double i=3;
printf("%f\n",pow(i,i));
return 0;
}
> gcc pow1.c -lm
(b).承上,這段code卻不需要-lm,請問理由為何?
#include <stdio.h>
#include <math.h>
int main(void){
printf("%f\n",pow(3,3));
return 0;
}
> gcc pow2.c
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.227.2
※ 編輯: apey 來自: 114.34.227.2 (04/30 23:47)
推 purpose:前幾天才有討論過,因為編譯器直接計算pow(3,3)的值 05/01 00:42
→ purpose:直接幫你替換成printf("%f\n", 結果); 05/01 00:42
推 dayyeah:應該還有另一個前提是macro/inline? 05/01 00:44
推 LPH66:不用, 只要 compiler 認出兩個參數都是常數即可 05/01 02:21
→ apey:原來如此! 謝謝大家 05/02 22:17