42 votes

Comment appeler std : :min() quand min a été défini comme une macro ?

Comment puis-je appeler std::min alors que min a déjà été défini comme une macro ?

97voto

user763305 Points 6123
(std::min)(x,y)

Les parenthèses autour de min empêchent l'expansion de la macro. Cela fonctionne avec toutes les macros de fonction.

21voto

Andy T Points 8016

Sous Windows, vous devez définir NOMINMAX avant d'inclure des en-têtes Windows, de préférence au début de l'en-tête précompilé.

2voto

Mehrdad Points 70493

J'ai trouvé d'autres façons de le faire :

Méthode 1 :

using std::min;
min(a, b);   // uses either the macro or the function (don't add side effects!)

Méthode 2 :

#ifndef BOOST_PREVENT_MACRO_SUBSTITUTION
#define BOOST_PREVENT_MACRO_SUBSTITUTION
#endif

...
std::min BOOST_PREVENT_MACRO_SUBSTITUTION(a, b)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X