Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens des erreurs lors de l'utilisation de std::min/max avec #define NOMINMAX ?

Pourquoi est-ce que j'obtiens des erreurs lors de l'utilisation de std::min/max avec #define NOMINMAX ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-14 17:18:02252parcourir

Why Do I Get Errors When Using std::min/max with #define NOMINMAX?

Utilisation de std::min/max avec #define NOMINMAX

Dans une mise à jour récente de votre fichier main.cpp, vous avez introduit la directive de préprocesseur suivante :

#define NOMINMAX
#include <Windows.h>
#include <algorithm>

Cette action vous permet d'utiliser les fonctions std::max et std::min dans votre code. Cependant, les tentatives ultérieures d'utilisation de ces fonctions dans d'autres fichiers génèrent des erreurs telles que :

error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'

Malgré les tentatives de définition de NOMINMAX dans ces fichiers supplémentaires, le problème persiste.

Le problème réside dans le fait que NOMINMAX définit des alias pour les macros Windows min et max, écrasant les versions C standard fournies par . Pour résoudre ce problème, utilisez des parenthèses autour des appels std::min et std::max :

(std::min)(x, y);

Cette approche évite d'invoquer les macros de type fonction, permettant ainsi d'appliquer les versions C standard.

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!

Déclaration:
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