Maison >développement back-end >C++ >Comment résoudre la collision de macros Windows.h Max avec std::numeric_limits::max() ?
Collision de macro Windows.h Max avec Std : une solution
Lors du développement avec C, des conflits entre les définitions de bibliothèque standard et celles trouvées dans le L'en-tête Windows.h peut apparaître. Cette collision peut affecter l'utilisation de la macro max.
Plus précisément, l'extrait de code fournissait des tentatives pour gérer les entrées utilisateur non valides de cin à l'aide d'une macro max. Cependant, sous Windows, la macro max de Windows.h entre en conflit avec std::numeric_limits
Pour résoudre ce problème, une approche plus propre et plus élégante consiste à supprimez les définitions min et max dans Windef.h. Ceci peut être réalisé en définissant la macro NOMINMAX avant d'inclure Windows.h.
#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);
En définissant NOMINMAX, vous désactivez efficacement les définitions min et max conflictuelles dans Windows.h, permettant l'utilisation de std :: macro numeric_limits
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!