VC++でM_PIが使えなかった理由判明

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

VC++でM_PIが使えなかった理由判明」への2件のフィードバック

  1. ピンバック: hiroakit blog : Visual Studio 2005 C++でM_PI

  2. ピンバック: math.hをincludeしたのに、M_PIが使えない! | ryoxx.org

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です