math.hをインクルードしているのに「M_PIが定義されていません」とエラーが出てしまう時の対処法

プログラミング
スポンサーリンク

この記事はc言語(C++)のコード内でmath.hをインクルードしているのに「E0020 識別子 “M_PI” が定義されていません」とエラーが発生してしまう状況の改善法を説明しています。この状況はVisual Studioで発生します。 

識別子"M_PI"が定義されていません

実行した環境
・ Windows8.1
・ Visual Studio 2019 Community

スポンサーリンク

方法

「#include <math.h> 」の上に次の行を貼り付けます。

#define _USE_MATH_DEFINES

Visual Studioエディタに「#define _USE_MATH_DEFINES」と貼り付けた

次のコードではM_PIを表示し、sin(M_PI),cos(M_PI)を計算して表示しています。

#include <stdio.h>

#define _USE_MATH_DEFINES
#include <math.h>

int main() {
	
	printf("M_PI %3.10f\n", M_PI);
	printf("sin(M_PI) %3.10f\n", sin(M_PI));
	printf("cos(M_PI) %3.10f\n", cos(M_PI));

	return 0;
}

実行結果 

sin(M_PI),cos(M_PI)の計算結果
スポンサーリンク

他のコンパイラでは

上記のコードをCygwinのgccでコンパイルしてみたのですが「#define _USE_MATH_DEFINES」がなくても動作します。

Cygwinのgccでは「#define _USE_MATH_DEFINES」がなくてもコンパイルエラーにならない。

実行結果

Cygwinのgccでの実行結果

この記事は以上です。