 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
blackhorus Guest
|
Posted: Sat Jul 30, 2005 1:12 pm Post subject: connaitre le système...??? |
|
|
est-ce qu'il existe un moyen de tester la plateforme, pour savoir si on
est sous windows, on execute (commande1.exe), ou sous linux et executer
(commande2) ... bien sur avec C++, de façon à compiler ce même
programme sous les deux plateformes...
|
|
| Back to top |
|
 |
Arnaud Meurgues Guest
|
Posted: Sun Jul 31, 2005 7:56 am Post subject: Re: connaitre le système...??? |
|
|
blackhorus wrote:
| Quote: | est-ce qu'il existe un moyen de tester la plateforme, pour savoir si on
est sous windows, on execute (commande1.exe), ou sous linux et executer
(commande2) ... bien sur avec C++, de façon à compiler ce même
programme sous les deux plateformes...
|
A priori, un compilateur définit toujours une macro qui lui est propre.
Par exemple, msvc définit _MSC_VER.
On peut donc include dans un programme quelque chose comme :
#if defined(_MSC_VER)
# include <windows.h>
#else
# include <unix.h>
#endif
Bon, là, ça suppose que sous windows, on ne compilera qu'avec msvc, mais
c'est un exemple de ce qu'on peut faire.
--
Arnaud
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Sun Jul 31, 2005 10:23 am Post subject: Re: connaitre le système...??? |
|
|
On 30 Jul 2005 06:12:20 -0700, "blackhorus" <blackhorus (AT) maildz (DOT) com>:
| Quote: | est-ce qu'il existe un moyen de tester la plateforme, pour savoir si on
est sous windows
|
Généralement, ceci fonctionne :
#ifdef __WIN32__
Avec, bien sûr, les avertissements d'usage sur ce genre de méthode :
il est fort possible qu'une meilleure solution soit un .h avec
l'interface commune et un .cpp d'implémentation par plate-forme.
Exemple : machin.h mais machin.win32.cpp, machin.macosx.cpp et
machin.linux.cpp.
|
|
| Back to top |
|
 |
Matthieu Moy Guest
|
Posted: Sun Jul 31, 2005 10:53 am Post subject: Re: connaitre le système...??? |
|
|
Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:
| Quote: | Avec, bien sûr, les avertissements d'usage sur ce genre de méthode :
il est fort possible qu'une meilleure solution soit un .h avec
l'interface commune et un .cpp d'implémentation par plate-forme.
Exemple : machin.h mais machin.win32.cpp, machin.macosx.cpp et
machin.linux.cpp.
|
Et en général, un script de configuration (par exemple un truc à base
d'autotools) executé avant la compilation fera du meilleur boulot
qu'un ensemble de macros du préprocesseur.
--
Matthieu
|
|
| Back to top |
|
 |
Richard Delorme Guest
|
Posted: Sun Jul 31, 2005 10:57 am Post subject: Re: connaitre le système...??? |
|
|
Fabien LE LEZ a écrit :
| Quote: | On 30 Jul 2005 06:12:20 -0700, "blackhorus" <blackhorus (AT) maildz (DOT) com>:
est-ce qu'il existe un moyen de tester la plateforme, pour savoir si on
est sous windows
Généralement, ceci fonctionne :
#ifdef __WIN32__
|
plutôt:
#ifdef _WIN32
--
Richard
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Mon Aug 01, 2005 7:35 am Post subject: Re: connaitre le système...??? |
|
|
blackhorus wrote:
| Quote: | est-ce qu'il existe un moyen de tester la plateforme, pour
savoir si on est sous windows, on execute (commande1.exe), ou
sous linux et executer (commande2) ... bien sur avec C++, de
façon à compiler ce même programme sous les deux
plateformes...
|
La décision, évidemment, se fait lors de la compilation, et non
lors de l'exécution -- une exécutable Windows ne tourne pas sous
Linux, et vice versa.
La solution que j'ai toujours adoptée, c'est de maintenir deux
répertoires avec des fichiers d'en-tête, voir les sources, et de
choisir le répertoire au moyen de la ligne de commande du
compilateur (qui dépend de toute façon du système, et même du
compilateur).
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
blackhorus Guest
|
Posted: Sat Aug 06, 2005 3:15 pm Post subject: Re: connaitre le système...??? |
|
|
est-ce que gcc (bien sur la distrib cygwin) définit ce symbole, ou
c'est simplement propore à cl (compilateur de microsoft) ???
|
|
| Back to top |
|
 |
Falk Tannhäuser Guest
|
Posted: Sat Aug 06, 2005 3:45 pm Post subject: Re: connaitre le système...??? |
|
|
blackhorus wrote:
| Quote: | est-ce que gcc (bien sur la distrib cygwin) définit ce symbole, ou
c'est simplement propore à cl (compilateur de microsoft) ???
|
gcc ne définit que
#define __CYGWIN__ 1
#define __CYGWIN32__ 1
Bon à savoir: Quand on lui passe les options -E -dM et un fichier
source vide, gcc affiche tous les symboles de préprocesseur prédéfinis.
Falk
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|