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 :

map<flag8,x>, error: invalid suffix "b00000010" on integer constant


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut map<flag8,x>, error: invalid suffix "b00000010" on integer constant
    bonjour,

    J'ai un problème de compilation. Sur ma machine mon code compile correctement, par contre sur une autre machine j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    partition.hpp:60:13: error: invalid suffix "b00000010" on integer constant
    la ligne de code correspondante est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    neighbors[N ].id = pos2hash(hash2pos(id) + Int2( 0,  1));
    avec les définitions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    typedef unsigned char  flag8 ;
    #define N  0b00000010 // 0x02
    std::map<flag8, Neighbor> neighbors ;
    +uelqu'un saurait-il d'où pourrait venir l'erreur ?

  2. #2
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Points : 5 382
    Points
    5 382
    Par défaut
    Salut,

    Je n'ai jamais déclarer un nombre binaire (toujours en hexa), mais pourquoi fais-tu ça ?

    Une déclaration commençant par '0' est de l'octale (0-7), il me semble, donc 'b' n'est pas de l'octale.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    bon ben visiblement l'autre machine ne connait pas l'écriture 0b ... étrange quand même

  4. #4
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Points : 5 382
    Points
    5 382
    Par défaut
    Citation Envoyé par Gébix Voir le message
    bon ben visiblement l'autre machine ne connait pas l'écriture 0b
    Moi non plus
    Tu l'as trouvée où ? C'est peut-être lié au compilo.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 59
    Points : 120
    Points
    120
    Par défaut
    les 'binary litterals' ne sont pas supportés par les standards C et C++, il n'y a que les hexadecimal (0x***) et octal (0***)

    une alternative dans boost : la macro BOOST_BINARY

    il y avait une proposition dans ce sens au C++0x (Extensible Literals : n2378)
    mais je ne sais pas ce que cela a donné

    Cdt

  6. #6
    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,

    Citation Envoyé par Gébix Voir le message
    bon ben visiblement l'autre machine ne connait pas l'écriture 0b ... étrange quand même
    C'est pas dans le langage C ni C++. GCC le supporte en extension. Si tu ne peux changer le code, il faut compiler avec une option activant les extensions de langages. Quel est ton compilateur ? Quels sont tes options de compilations ?

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

Discussions similaires

  1. error:invalid use of undefined type
    Par assif dans le forum C++
    Réponses: 2
    Dernier message: 25/10/2006, 21h11
  2. [VB6] Compile error: Invalide use of New Keyword
    Par ironik dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/05/2006, 12h40
  3. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 11h28
  4. [MySQL]DBX error : invalid translation
    Par billoum dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/01/2006, 20h55
  5. Réponses: 6
    Dernier message: 21/10/2005, 18h59

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