[VISUAL C++] Trois details embetants resolus

 Trois details embetants resolus [VISUAL C++] - Programmation

Marsh Posté le 22-06-2001 à 15:39:13    

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:

Reply

Marsh Posté le 22-06-2001 à 15:39:13   

Reply

Marsh Posté le 22-06-2001 à 16:23:02    

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.


---------------
-----------------------
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed