Heim >Backend-Entwicklung >C++ >Wie löst man die „max'-Makrokollision zwischen Windows.h und der Standardbibliothek?
Minimale und maximale Makrokollision zwischen Windows.h und Std
Beim Umgang mit der Eingabevalidierung in C kann es zu einem Konflikt zwischen den kommen max-Makro definiert in Windows.h und die max-Funktion in der Standardbibliothek. Dies kann auftreten, wenn versucht wird, das Fehlerflag des Eingabestreams mit der Ignorierfunktion zu löschen.
Um dieses Problem zu beheben, sollten Sie den folgenden Ansatz in Betracht ziehen:
#define NOMINMAX #include <Windows.h> #include <iostream> void Foo() { int delay = 0; 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); }
Das NOMINMAX-Makro unterdrückt die Mindest- und max-Definitionen in Windows.h, sodass das Programm die Max-Funktion aus der Standardbibliothek ohne Konflikte verwenden kann. Durch diesen Ansatz entfällt die Notwendigkeit, die Definition des Max-Makros manuell aufzuheben und später neu zu definieren.
Das obige ist der detaillierte Inhalt vonWie löst man die „max'-Makrokollision zwischen Windows.h und der Standardbibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!