numeric_limits und windows.h?
-
Ist zwar vielleicht nicht ganz Standard aber nach WinAPI passts noch weniger.
Wenn ich die windows.h und die limits includiere und versuche über std::numeric_limits<Typ>::max() den maximalen Wert eines Typs zu bestimmen bekomme ich immer eine Warnung vom Compiler.
Verständlich, da max() ein Makro in der windows.h ist.
Hatte schon mal einer von euch diese Warnung? Wie lösen? Einfach nach einbinden der windows.h ein #ifdef-#undef-#endif ist irgendwie nicht die feine englsiche Art...
Sonstige vorschläge?
MfG SideWinder
-
Siehe Windows.h:
#define NOMINMAX
-
Danke soetwas habe ich gesucht!
MfG SideWinder
-
Hallo,
oder gleich den boost-Weg gehen:#ifdef min # undef min #endif #ifdef max # undef max #endif #ifndef NOMINMAX # define NOMINMAX #endif #ifdef BOOST_MSVC namespace std{ // Apparently, something in the Microsoft libraries requires the "long" // overload, because it calls the min/max functions with arguments of // slightly different type. (If this proves to be incorrect, this // whole "BOOST_MSVC" section can be removed.) inline long min(long __a, long __b) { return __b < __a ? __b : __a; } inline long max(long __a, long __b) { return __a < __b ? __b : __a; } // The "long double" overload is required, otherwise user code calling // min/max for floating-point numbers will use the "long" overload. // (SourceForge bug #495495) inline long double min(long double __a, long double __b) { return __b < __a ? __b : __a; } inline long double max(long double __a, long double __b) { return __a < __b ? __b : __a; } } using std::min; using std::max; # endif
Es zwingt dich natürlich keiner diese furchtbaren Namen zu verwenden
-
Das ist ja fast so schön wie die HP-Standardlibary.
Meine Vermutung: Die schreiben den Quellcode ganz normal und nacher benützen die Suchen&Ersetzen damit sich niemand mehr auskennt. Schaut euch mal die Libary von HP an, so kann nicht mal ein P.J. Plauger programmieren.
BTW: HP-Libary == MSVC-Libary
MfG SideWinder
-
ich versteh auch nicht warum die die __ vor die variablen namen setzen. das sind doch lokale variablen. da kann es doch garnicht zu konflikten kommen.
-
pjn schrieb:
ich versteh auch nicht warum die die __ vor die variablen namen setzen. das sind doch lokale variablen. da kann es doch garnicht zu konflikten kommen.
Du hast die MSVC-Libary noch nicht gesehen, wenns bloß zwei Unterstriche werden wärs ja noch okay. Aber die Verwenden so zeichnende Variablennamen wie "_E" oder "_T" und bei Templates siehsts auch nicht besser aus.
MfG SideWinder