mettre des #ifdef avec Visual Studio suivant OS [C/C++] - Programmation
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 !
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
Marsh Posté le 16-02-2001 à 10:42:28
Sais-tu pourquoi Visual Studio (6) ne semble accepter que les nom _WIN32 et _WINDOWS ?
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 !
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é.
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 ?