[C/C++] mettre des #ifdef avec Visual Studio suivant OS

mettre des #ifdef avec Visual Studio suivant OS [C/C++] - Programmation

Marsh Posté le 16-02-2001 à 10:25:41    

J'ai cru lire qque part que faire un
 
#ifdef BLABLA
#include "plouploum.h"
#endif
 
c'était pas conseillé.
Pourtant j'en ai besoin : j'ai un programme qui doit tourner sous Unix et sous NT, mais sous NT j'ai un include à rajouter en +. Je fais donc le test ; Visual Studio positionne BLABLA en preprocessor definition (/d "BLABLA" ) mais ça ne marche pas, il ne fait le test que avec _WIN32 ou _WINDOWS à la place de BLABLA. Comment ça se fait ?

Reply

Marsh Posté le 16-02-2001 à 10:25:41   

Reply

Marsh Posté le 16-02-2001 à 10:36:04    

WhitePoney a écrit a écrit :

J'ai cru lire qque part que faire un
 
#ifdef BLABLA
#include "plouploum.h"
#endif
 
c'était pas conseillé.
Pourtant j'en ai besoin : j'ai un programme qui doit tourner sous Unix et sous NT, mais sous NT j'ai un include à rajouter en +. Je fais donc le test ; Visual Studio positionne BLABLA en preprocessor definition (/d "BLABLA" ) mais ça ne marche pas, il ne fait le test que avec _WIN32 ou _WINDOWS à la place de BLABLA. Comment ça se fait ?




 
Je ne vois pas pourquoi ça ne sera pas conseillé. A partir du moment on ne peut plus faire du code protable, les directives #if sont faites pour ça !


---------------
Pipiru piru piru pipiru pi
Reply

Marsh Posté le 16-02-2001 à 10:41:41    

Salut,
 
Je ne connais pas Visual Studio, mais au lieu de mettre  
#ifdef VISUAL_STUDIO
#include "plouploum.h"
#endif
 
tu peux faire
#ifndef UNIX
#include "plouploum.h"
#endif
 
 
Et passer UNIX=true dans Unix
Ca ne réponds pas trop à ta question, mais c'est un moyen de contournement.
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 16-02-2001 à 10:42:28    

Sais-tu pourquoi Visual Studio (6) ne semble accepter que les nom _WIN32 et _WINDOWS ?

Reply

Marsh Posté le 16-02-2001 à 14:27:37    

c'est bon j'ai trouvé le problème ; il y a pleins d'endroits où on peut mettre des preprocessor definition, et forcément j'ai mis les miens partout sauf là où il fallait (menu projet -> settings -> C/C++ -> General -> preprocessor definition).  
J'ai pu mettre mes propres noms de variables et ça marche. Ouf !

Reply

Marsh Posté le 16-02-2001 à 22:37:37    

Ce n'est pas conseillé car ça crée du code spaghetti, tout simplement.
 
Mais il y a des fois (typiquement pour la portabilité) où c'est quand même nécessaire. Dans ce cas, le meilleur conseil à donner est d'isoler au maximum le code dépendant plate-forme dans un ou quelques modules, encapsulant ainsi la gestion de la portabilité. Et le reste du code ne contient pas un seul #ifdef, et se contente de se reposer sur les modules gérant la portabilité.

Reply

Sujets relatifs:

Leave a Replay

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