diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp
index 65e7cb86addc66f968a405b379b88343e5347423..57e722670cd03b64e3b2d4b6c826635233dcba28 100644
--- a/src/idl_parser.cpp
+++ b/src/idl_parser.cpp
@@ -18,12 +18,6 @@
 #include <list>
 #include <iostream>
 
-#ifdef _WIN32
-#if !defined(_USE_MATH_DEFINES)
-#define _USE_MATH_DEFINES  // For M_PI.
-#endif                     // !defined(_USE_MATH_DEFINES)
-#endif                     // _WIN32
-
 #include <math.h>
 
 #include "flatbuffers/idl.h"
@@ -31,6 +25,8 @@
 
 namespace flatbuffers {
 
+const double kPi = 3.14159265358979323846;
+
 const char *const kTypeNames[] = {
   #define FLATBUFFERS_TD(ENUM, IDLTYPE, \
     CTYPE, JTYPE, GTYPE, NTYPE, PTYPE) \
@@ -1272,8 +1268,8 @@ CheckedError Parser::ParseSingleValue(Value &e) {
         auto x = strtod(e.constant.c_str(), nullptr); \
         e.constant = NumToString(op); \
       }
-    FLATBUFFERS_FN_DOUBLE("deg", x / M_PI * 180);
-    FLATBUFFERS_FN_DOUBLE("rad", x * M_PI / 180);
+    FLATBUFFERS_FN_DOUBLE("deg", x / kPi * 180);
+    FLATBUFFERS_FN_DOUBLE("rad", x * kPi / 180);
     FLATBUFFERS_FN_DOUBLE("sin", sin(x));
     FLATBUFFERS_FN_DOUBLE("cos", cos(x));
     FLATBUFFERS_FN_DOUBLE("tan", tan(x));