guia c++ development-environment compile-time-constant

c++ - guia - M_PI marcado como identificador no declarado



guia qgis (3)

Cuando compilo el siguiente código, recibí estos mensajes de error:

(Error 1 error C2065: ''M_PI'' : undeclared identifier 2 IntelliSense: identifier "M_PI" is undefined)

¿Que es esto?

#include <iostream> #include <math.h> using namespace std; double my_sqrt1( double n );`enter code here` int main() { double k[5] = {-100, -10, -1, 10, 100}; int i; for ( i = 0; i < 5; i++ ) { double val = M_PI * pow( 10.0, k[i] ); cout << "n: " << val << "/tmysqrt: " << my_sqrt1(val) << "/tsqrt: " << sqrt(val) << endl; } return 0; } double my_sqrt1( double n ) { int i; double x = 1; for ( i = 0; i < 10; i++ ) { x = ( x + n / x ) / 2; } return x; }


Parece que estás usando cosas de MS, de acuerdo con sus documentos

Las constantes matemáticas no están definidas en el estándar C / C ++. Para usarlos, primero debe definir _USE_MATH_DEFINES y luego incluir cmath o math.h.

Así que necesitas algo como

#define _USE_MATH_DEFINES #include <cmath>

como un encabezado.


M_PI es compatible con GCC, pero tienes que trabajar para conseguirlo

#undef __STRICT_ANSI__ #include <cmath>

o si no te gusta contaminar tu archivo fuente, entonces haz

g++ -U__STRICT_ANSI__ <other options>


math.h no define M_PI de forma predeterminada. Así que ve con esto:

#ifndef M_PI #define M_PI 3.14159265358979323846 #endif

Esto manejará ambos casos, ya sea que su encabezado tenga M_PI definido o no.