Werte von MAXFLOAT und MAXINT



  • Hallo!
    ICh versuche gerade, ntop zu compilieren, habe jedoch bei GDChart folgendes Problem:
    Wenn ich mit make compiliere, beschwert sich MinGW (GCC 3.4.2) darüber, dass MAXFLOAT und MAXINT nicht deklariert seien (math.h ist jedoch eingebunden. Bei folgendem Testprogramm habe ich das gleiche Programm (selbst wenn ich es mit "g++ test.cpp -o test.exe -lm" compiliere):

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main()
    {
     cout << MAXFLOAT;
     cout << MAXINT;
    }
    

    Ich denke, dass folgender Codeschnipsel eine Lösung ist:

    #ifndef MAXFLOAT
     #define MAXFLOAT (Wert)
    #endif
    
    #ifndef MAXINT
     #define MAXINT (Wert)
    #endif
    

    Was muss ich für "(Wert)" einsetzen, damit es das richtige Ergebnis erzielt?

    Danke, Golem



  • in limits.h sind die meisten max und mins via macro definiert. wieso benötigst du gerade MAXFLOAT und nicht wie üblich FLT_MAX???

    aber wenn du das unbedingt benötigst, dann mach es so:

    #include <limits>
    #include <iostream>
    
    #ifndef MAXFLOAT 
     #define MAXFLOAT FLT_MAX 
    #endif 
    
    #ifndef MAXINT 
     #define MAXINT INT_MAX 
    #endif 
    
    int main()
    {
       std::cout<<INT_MAX<<std::endl;
       std::cout<<INT_MIN<<std::endl;
       std::cout<<DBL_MAX<<std::endl;
       std::cout<<DBL_MIN<<std::endl;
       std::cout<<FLT_MIN<<std::endl;
       std::cout<<FLT_MAX<<std::endl;
       std::cout<<MAXFLOAT <<std::endl;
       std::cout<<MAXINT <<std::endl;
    }
    


  • In C++ nimmt man lieber std::numeric_limits

    #include <limits>
    
    int main {
      std::cout << std::numeric_limits<int>::max() << '\n';
    }
    


  • schon klar. aber ich vermute er hatte die Macros gesucht...


Anmelden zum Antworten