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 �prouv� 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
    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 : 62
    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
    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
    Par d�faut
    Bonjour,
    Tu peux aussi utiliser les flux pour tes sorties.

  4. #4
    Membre �prouv� 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
    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
    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 �prouv� 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
    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
    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 �prouv� 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
    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
    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 �prouv� 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
    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