学生の時からVC++でM_PIを使おうとしたら「M_PIが定義されてない」
ってエラーが出るんだろう? と思ってはいたものの,スルーして
#define M_PI 3.1415926535897932384626433832795
とか定義してだましだましやってたんですが,
(特にM_PIについて調べたわけじゃないけど)たまたま読んだblogにて
#define _USE_MATH_DEFINES
#include <math.h>
と定義してやると,うまくいくらしいということで
やってみたらうまくいった.でも,理由がわからないと
なんだか気持ち悪いので,math.hを読んでみると
#if defined(_USE_MATH_DEFINES) && !defined(_MATH_DEFINES_DEFINED)
#endif
の間に
#define M_PI 3.14159265358979323846
って記述してあるので,M_PIを使うようなプログラムでは,
#include <math.h>
でmath.hをインクルードする前に
#define _USE_MATH_DEFINES
としなきゃ、そりゃあ「M_PIが定義されてない」ってエラーも出るよなと納得.
長年つっかえてたものが取れてちょっとスッキリ.
ピンバック: hiroakit blog : Visual Studio 2005 C++でM_PI
ピンバック: math.hをincludeしたのに、M_PIが使えない! | ryoxx.org