学生の時から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が定義されてない」ってエラーも出るよなと納得.
長年つっかえてたものが取れてちょっとスッキリ.

Leave a Reply