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=E7on =E0 compiler ce m=EAme
programme sous les deux plateformes...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Arnaud Meurgues
blackhorus wrote:
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
blackhorus wrote:
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.
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
Fabien LE LEZ
On 30 Jul 2005 06:12:20 -0700, "blackhorus" :
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.
On 30 Jul 2005 06:12:20 -0700, "blackhorus" <blackhorus@maildz.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__
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.
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.
Matthieu Moy
Fabien LE LEZ writes:
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
Fabien LE LEZ <gramster@gramster.com> writes:
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.
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
Richard Delorme
On 30 Jul 2005 06:12:20 -0700, "blackhorus" :
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
On 30 Jul 2005 06:12:20 -0700, "blackhorus" <blackhorus@maildz.com>:
est-ce qu'il existe un moyen de tester la plateforme, pour savoir si on
est sous windows
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
kanze
blackhorus wrote:
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
blackhorus wrote:
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
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
blackhorus
est-ce que gcc (bien sur la distrib cygwin) définit ce symbole, ou c'est simplement propore à cl (compilateur de microsoft) ???
est-ce que gcc (bien sur la distrib cygwin) définit ce symbole, ou
c'est simplement propore à cl (compilateur de microsoft) ???