Heim >Backend-Entwicklung >C++ >Wie löst man die Windows.h-Max-Makrokollision mit std::numeric_limits::max()?
Windows.h Max-Makrokollision mit Std: Eine Lösung
Bei der Entwicklung mit C treten Konflikte zwischen Standardbibliotheksdefinitionen und denen in der auf Es kann ein Windows.h-Header entstehen. Diese Kollision kann sich auf die Verwendung des Max-Makros auswirken.
Konkret versucht das bereitgestellte Code-Snippet, ungültige Benutzereingaben von cin mithilfe eines Max-Makros zu verarbeiten. Unter Windows steht jedoch das Max-Makro von Windows.h in Konflikt mit std::numeric_limits
Um dieses Problem zu beheben, besteht ein saubererer und eleganterer Ansatz darin unterdrückt die Min- und Max-Definitionen in Windef.h. Dies kann erreicht werden, indem Sie das NOMINMAX-Makro definieren, bevor Sie Windows.h einbinden.
#define NOMINMAX #include <Windows.h> // includes WinDef.h which defines min() max() do { if(cin.fail()) { cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } cout << "Enter number of seconds between submissions: "; } while(!(cin >> delay) || delay == 0);
Durch die Definition von NOMINMAX deaktivieren Sie effektiv die widersprüchlichen Min- und Max-Definitionen in Windows.h und ermöglichen so die Verwendung von std:: numeric_limits
Das obige ist der detaillierte Inhalt vonWie löst man die Windows.h-Max-Makrokollision mit std::numeric_limits::max()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!