Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6025 connectés 

 


Dernière réponse
Sujet : [VISUAL C++] Trois details embetants resolus
janoscoder comme min et max de la STL sont en conflit avec windows.h, on peut utiliser _MIN et _MAX, qui sont la même chose mais qui évitent le conflit de nom.
Comme quoi, ms avait trouvé une manière de résoudre le problème, mais n'est pas allé le crier sur les toîts.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
janoscoder comme min et max de la STL sont en conflit avec windows.h, on peut utiliser _MIN et _MAX, qui sont la même chose mais qui évitent le conflit de nom.
Comme quoi, ms avait trouvé une manière de résoudre le problème, mais n'est pas allé le crier sur les toîts.
tgrx 1. Le probleme des boucles for qui executent le premier parametre dans le bloc courant, ce qui fait que :
for (int i=1; i<50; i++);
for (int i=1; i<50; i++);
ne passe pas, la variable i etant redefinie.
 
Solution :
#define for if(0) {} else for
 
Et voila, la boucle for est compatible ANSI :)
 
2. Le probleme du min/max. Lorsque l'on doit inclure les fichiers windows (et en particulier windef.h) des macros min et max sont incluses, ce qui entre en conflit avec les templates min et max de la STL.
 
Par consequent, il faut desactiver ces macros.
Solution : mettre NOMINMAX comme directive du preprocessor.
 
3. La STL fournie avec Visual C++ ne contient pas les template min et max. Nous allons donc les rajouter :
 

Code :
  1. #ifndef STD_MINMAX
  2. namespace std {
  3.   template <class T>
  4.   inline const T& min(const T& a, const T& b)
  5.     { return b < a ? b : a; }
  6.   template <class T>
  7.   inline const T& max(const T& a, const T& b)
  8.     { return a < b ? b : a; }
  9. }
  10. #endif


 
Voila j'espere que ca pourra aider certains d'entre vous :hello:


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)