IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Gérer les différents OS dans son code source lors de la compilation


Sujet :

C

  1. #1
    Membre habitué Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Points : 196
    Points
    196
    Par défaut Gérer les différents OS dans son code source lors de la compilation
    Bonsoir,
    tout simplement: comment bien gérer les différents OS dans son code source lors de la compilation ?

    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 499
    Points : 1 005
    Points
    1 005
    Par défaut
    bonjour dafpp

    Avec la compilation conditionnelle !!!

  3. #3
    Membre habitué Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Points : 196
    Points
    196
    Par défaut
    D'accord ça je sais, mais quel sont les constantes, et comment je gère le 32 bits du 64 bits ?

  4. #4
    Membre éprouvé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 499
    Points : 1 005
    Points
    1 005
    Par défaut
    Bonjour dafpp

    si cela concerne windows, ce lien est une piste

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Citation Envoyé par dafpp Voir le message
    D'accord ça je sais, mais quel sont les constantes, et comment je gère le 32 bits du 64 bits ?
    Tu veux faire quoi exactement ?

    Tu veux avec un code source multi-plateformes, ok.
    Et tu veux qu'il soit aussi optimisé pour l'architecture ? 32/64bit.

    Un exe 32bit marche très bien sous un OS 64bit (que ce soit Windows ou Linux).

  6. #6
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par dafpp Voir le message
    Bonsoir,
    tout simplement: comment bien gérer les différents OS dans son code source lors de la compilation ?

    merci d'avance
    Tu commence par ecrire autant que possible du code qui ne depends pas de l'OS.

    Pour ce qui depends de l'OS tu ecris une couche d'abstraction dont seule l'implementation va dependre de l'OS (et le choix du fichier est fait par le systeme de build). C'est uniquement dans cette couche d'abstraction que de la compilation conditionnelle sur l'OS devrait etre possible (tu ne vas pas ecrire une implementation pour chaque variante d'Unix ou de Windows, mais ecrire deux implementations bien separees, une pour les Unix, l'autre pour les Windows; s'il y a des choses dupliquees, tu peux remettre en cause ta couche d'abtraction)

  7. #7
    Membre habitué Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Points : 196
    Points
    196
    Par défaut
    Oui je vois, c'est pour ça que c'est important de respecter un maximum les normes, mais des fois on peut pas: exemple, pour créer un dossier, mkdir sur linux prend 3 arguments, et windows 2.

    Donc n'y a t-il pas des constantes pour savoir l'os directement qu'on utilise et faire la compilation conditionnel ?
    Car moi j'utilise bêtement un define pour dire que j'utilise linux, et si je suis sur windows je retire, mais y a t-il pas plus simple ?

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 680
    Points
    13 680
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dafpp Voir le message
    exemple, pour créer un dossier, mkdir sur linux prend 3 arguments, et windows 2.
    Tu parles en shell ?





    Citation Envoyé par dafpp Voir le message
    Donc n'y a t-il pas des constantes pour savoir l'os directement qu'on utilise et faire la compilation conditionnel ?
    Car moi j'utilise bêtement un define pour dire que j'utilise linux, et si je suis sur windows je retire, mais y a t-il pas plus simple ?
    Essaye de regarder ici, tu auras un exemple.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 127
    Points : 33 037
    Points
    33 037
    Billets dans le blog
    4
    Par défaut
    Sous visual avec les define automatiquement sur les configuration de projet c'est pas mal
    Mais il existe des predefined macro, comme listée ici http://sourceforge.net/apps/mediawik...rating_Systems
    Après, le compilateur a peut-être une influence ?

  10. #10
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Citation Envoyé par dafpp Voir le message
    Car moi j'utilise bêtement un define pour dire que j'utilise linux, et si je suis sur windows je retire, mais y a t-il pas plus simple ?
    Si je comprends bien, tu peux virer commplètement ton define.
    si ton code actuel ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #define LINUX
    ....
    #ifdef LINUX
    //code linux
    #endif
    tu peux virer le #define du code et le définir dans le compilo (makefile, gcc) avec :
    -D LINUX (je ne sais plus s'il faut un espace ou pas.

  11. #11
    Membre habitué Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Points : 196
    Points
    196
    Par défaut
    non je ne parle pas en shell, il y a la commande mkdir dans je ne sais pas laquel lib, mais sur windows, cette fonction a 2 arguments (il n'y a pas les droits), et sur linux il y a 3 arguments.

    Je vais noté tout ça, merci à tous.

  12. #12
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 680
    Points
    13 680
    Billets dans le blog
    1
    Par défaut
    @mala92 : En utilisant le lien de Bousk, tu n'as même pas besoin de le spécifier au compilateur : chaque OS va définir des macros. C'est ce qu'utilise Benjamin Roux dans mon lien.

    Essayez le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
     
    int main(void)
    {
        #ifdef _WIN32
        printf("Trouve _WIN32");
        #endif
        #ifdef linux
        printf("Trouve linux");
        #endif
     
        return 0;
    }
    Validé avec XP/CodeBlocks et GCC/RedHat où ça affiche le bon mot ; avec GCC/Solaris où ça n'affiche rien

    @dafpp : oki pour mkdir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/06/2012, 22h52
  2. Réponses: 1
    Dernier message: 16/05/2011, 16h13
  3. Réponses: 2
    Dernier message: 24/03/2011, 15h18
  4. Réponses: 0
    Dernier message: 08/04/2010, 11h29
  5. Réponses: 15
    Dernier message: 16/01/2009, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo