Pi-Konstante verwenden



  • Möchte in meinem Programm die Konstante M_PI verwenden, er sagt mir aber immer hartnäckig

    Error C2065: 'M_PI': nichtdeklarierter Bezeichner

    obwohl ich oben #include <math.h> gemacht habe. In der MSDN steht noch

    To use these math constants, you have to define _USE_MATH_DEFINES in addition to #including math.h.

    Wie funktioniert das? Mit

    #define _USE_MATH_DEFINES
    

    hatte ich keinen Erfolg.



  • den define musst du natürlich vor den include schreiben, das ist dir hoffentlich klar?



  • dEUs schrieb:

    den define musst du natürlich vor den include schreiben, das ist dir hoffentlich klar?

    Nein, ist es mir nicht, aber danke. Wofür ist das #define genau?

    PS: Funktioniert aber auch nicht...!? 😕

    #define _USE_MATH_DEFINES
    
    #include <math.h>
    


  • Hab heraus bekommen, dass es laut MSDN

    #define _USE_MATH_DEFINES
    #include <cmath>
    

    heißen muss. Geht aber auch nicht.

    Nur ein

    #ifndef M_PI
    #define M_PI	3.14159265358979323846f
    #endif
    

    brachte den Erfolg!? 😕



  • Welcher Compiler?
    VC6 kennt das z.B. noch nicht.



  • Visual Studio .NET 2003 Version 7.1.3088



  • vermutlich hast Du dann die math.h in anderem Zusammenhang in Deine Datei includiert, was zur Folge hat, dass an der Stelle die Du vermutest math.h eben nicht nocheinmal includiert wird. Dieses ausschließen wird durch entsprechende #define und #ifdef in fast jeder Headerdatei, auf jeden Fall in allen Standarddateien so gehandhabt.

    Abhilfe: schieb Dein

    #define _USE_MATH_DEFINES
    

    nach ganz oben, dann sollte es mich wirklich wundern, wenn es nicht klappt.

    Sonst wäre angesagt, mal Deine INCLUDE Pfade zu kontrollieren, bzw. zu untersuchen, was der Precompiler aus deinem Source macht.

    Jay



  • Bei mir hat es jetzt funktioniert, weil ich es in dieser Reihenfolge geschrieben habe:

    #define _USE_MATH_DEFINES
    #include <math.h>
    

    [java]


Anmelden zum Antworten