"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-12-22
Parcourir:258

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 
#include 

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 le min Windows et max macros, é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 la fonction- comme les macros, permettant d'appliquer les versions standards du C.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3