[問題] pow(3,3) gcc compile 不需-lm, why

看板C_and_CPP (C/C++)作者時間15年前 (2011/04/30 23:46), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/2 (看更多)
小弟在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)

05/01 00:42, , 1F
前幾天才有討論過,因為編譯器直接計算pow(3,3)的值
05/01 00:42, 1F

05/01 00:42, , 2F
直接幫你替換成printf("%f\n", 結果);
05/01 00:42, 2F

05/01 00:44, , 3F
應該還有另一個前提是macro/inline?
05/01 00:44, 3F

05/01 02:21, , 4F
不用, 只要 compiler 認出兩個參數都是常數即可
05/01 02:21, 4F

05/02 22:17, , 5F
原來如此! 謝謝大家
05/02 22:17, 5F
文章代碼(AID): #1Dl2xT-P (C_and_CPP)
文章代碼(AID): #1Dl2xT-P (C_and_CPP)