この記事はc言語(C++)のコード内でmath.hをインクルードしているのに「E0020 識別子 “M_PI” が定義されていません」とエラーが発生してしまう状況の改善法を説明しています。この状況はVisual Studioで発生します。
![識別子"M_PI"が定義されていません](https://nagaragawa-r.com/wp-content/uploads/2021/04/npadpp_10x.png)
実行した環境
・ Windows8.1
・ Visual Studio 2019 Community
方法
「#include <math.h> 」の上に次の行を貼り付けます。
#define _USE_MATH_DEFINES
![Visual Studioエディタに「#define _USE_MATH_DEFINES」と貼り付けた](https://nagaragawa-r.com/wp-content/uploads/2021/04/npadpp_13x.png)
次のコードでは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)の計算結果](https://nagaragawa-r.com/wp-content/uploads/2021/04/npadpp_14x.png)
他のコンパイラでは
上記のコードをCygwinのgccでコンパイルしてみたのですが「#define _USE_MATH_DEFINES」がなくても動作します。
![Cygwinのgccでは「#define _USE_MATH_DEFINES」がなくてもコンパイルエラーにならない。](https://nagaragawa-r.com/wp-content/uploads/2021/04/npadpp_11y.png)
実行結果
![Cygwinのgccでの実行結果](https://nagaragawa-r.com/wp-content/uploads/2021/04/npadpp_12x.png)
この記事は以上です。