Maison > développement back-end > C++ > le corps du texte

Comment résoudre la collision de macros « max » entre Windows.h et la bibliothèque standard ?

Mary-Kate Olsen
Libérer: 2024-11-11 16:41:02
original
221 Les gens l'ont consulté

How to Resolve the `max` Macro Collision Between Windows.h and the Standard Library?

Collision de macros Min et Max entre Windows.h et Std

Lorsqu'il s'agit de la validation d'entrée en C , on peut rencontrer un conflit entre le macro max définie dans Windows.h et la fonction max dans la bibliothèque standard. Cela peut survenir lorsque vous tentez d'effacer l'indicateur d'erreur du flux d'entrée à l'aide de la fonction ignore.

Pour résoudre ce problème, envisagez d'utiliser l'approche suivante :

#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);
}
Copier après la connexion

La macro NOMINMAX supprime les valeurs min et définitions max dans Windows.h, permettant au programme d'utiliser la fonction max de la bibliothèque standard sans conflit. Cette approche élimine le besoin de supprimer manuellement la définition de la macro maximale et de la redéfinir ultérieurement.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal