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 :

Syntax de #define


Sujet :

C++

  1. #1
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut Syntax de #define
    Bonjour,

    J'ai besoin de mettre ce qui suit des centaines de fois dans mon code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #ifdef _WIN32
      sprintf(command,"%I64i %I64i",my_var,my_var2);
    #else
      sprintf(command,"%llu %llu",my_var,my_var2);
    #endif
    Quelqu'un voit-il un moyen de remplacer les chaines "%I64i" et "%llu" par quelquechose du type qui suit. Mais je arrive pas à trouver la syntax qui faudrait mettre dans les #define.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #ifdef _WIN32
      #define ....
    #else
      #define ....
    #endif
    Merci d'avance de vos suggestions

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Et quelquechose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef _WIN32
      #define MASK_SPRINTF "%I64i %I64i"
    #else
      #define MASK_SPRINTF "%llu %llu"
    #endif
    et ensuite dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
    ...
    sprintf(command, MASK_SPRINTF,my_var,my_var2);
    ...
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Tu peux aussi utiliser les flux pour tes sorties.

  4. #4
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Merci ram-000 pour ta suggestion, mais en réalité, ca ce présenterait plutot comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifdef _WIN32
      sprintf(command,"%I64i %I64i",my_var,my_var2);
      sprintf(command2,"%I64i %I64i %I64i %I64i",my_var,my_var2,my_var3  ,my_var4);
      sprintf(command,"%I64i",my_var2);
    #else
      sprintf(command,"%llu %llu",my_var,my_var2);
      sprintf(command2,"%llu %llu %llu %llu",my_var,my_var2,my_var3,my_var4);
      sprintf(command,"%llu",my_var2);
    #endif
    Je cherche quelquechose de plus général.
    Concernant les flux, ca m'obligerait à modifier des milliers de lignes de codes, c'est exclu pour le moment

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    #ifdef _WIN32
    #define LPCSTR_FORMAT_LONG_LONG "%I64i"
    #else
    #define LPCSTR_FORMAT_LONG_LONG "%llu"
    #endif
     
    template<class T>
    int sprintf_long_long(char *command,T t1_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG,t1_);
    }
     
    template<class T>
    int sprintf_long_long(char *command,T t1_, T t2_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG,t1_,t2_);
    }
     
    template<class T>
    int sprintf_long_long(char *command,T t1_, T t2_, T t3_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG,t1_,t2_,t3_);
    }
     
    template<class T>
    int sprintf_long_long(char *command,T t1_, T t2_, T t3_, T t4_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG,t1_,t2_,t3_, t4_);
    }

  6. #6
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Ok merci, ca semble bien fonctionner, bien que je n'ai pas saisis pourquoi passer par des templates

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    Ok merci, ca semble bien fonctionner, bien que je n'ai pas saisis pourquoi passer par des templates
    Parce que dans un cas tu dois avoir des long long et dans l'autre des uint64_ ?

  8. #8
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Ce n'est pas la même chose !

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Quel est le type de my_var ? Si c'est toujours le même tu peux faire une version non template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #ifdef _WIN32
    #define LPCSTR_FORMAT_LONG_LONG "%I64i"
    #else
    #define LPCSTR_FORMAT_LONG_LONG "%llu"
    #endif
     
    typedef TYPE_DE_my_var T;
     
    int sprintf_long_long(char *command,T t1_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG,t1_);
    }
     
     
    int sprintf_long_long(char *command,T t1_, T t2_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG,t1_,t2_);
    }
     
     
    int sprintf_long_long(char *command,T t1_, T t2_, T t3_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG,t1_,t2_,t3_);
    }
     
     
    int sprintf_long_long(char *command,T t1_, T t2_, T t3_, T t4_)
    {
       return sprintf(command,LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG " " LPCSTR_FORMAT_LONG_LONG,t1_,t2_,t3_, t4_);
    }

  10. #10
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Effectivement, c'est toujours le même.
    Encore merci.

Discussions similaires

  1. Fonctions JS "not defined" et "syntax error"
    Par ffbb dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/08/2010, 21h50
  2. Réponses: 18
    Dernier message: 06/04/2008, 20h57
  3. syntaxe de commande incorrecte sur un "if defined"
    Par Nowoday dans le forum Windows
    Réponses: 2
    Dernier message: 01/07/2007, 17h36
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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