C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

connaitre le système...???

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
blackhorus
Guest





PostPosted: Sat Jul 30, 2005 1:12 pm    Post subject: connaitre le système...??? Reply with 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...

Back to top
Arnaud Meurgues
Guest





PostPosted: Sun Jul 31, 2005 7:56 am    Post subject: Re: connaitre le système...??? Reply with quote



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





PostPosted: Sun Jul 31, 2005 10:23 am    Post subject: Re: connaitre le système...??? Reply with quote



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





PostPosted: Sun Jul 31, 2005 10:53 am    Post subject: Re: connaitre le système...??? Reply with quote

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





PostPosted: Sun Jul 31, 2005 10:57 am    Post subject: Re: connaitre le système...??? Reply with quote

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





PostPosted: Mon Aug 01, 2005 7:35 am    Post subject: Re: connaitre le système...??? Reply with quote

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





PostPosted: Sat Aug 06, 2005 3:15 pm    Post subject: Re: connaitre le système...??? Reply with quote

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





PostPosted: Sat Aug 06, 2005 3:45 pm    Post subject: Re: connaitre le système...??? Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.