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 :

enum et preprocesseur


Sujet :

C++

  1. #1
    Membre éprouvé Avatar de pcdwarf
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 964
    Points
    964
    Par défaut enum et preprocesseur
    Bonjour

    Je voudrais verifier au compile-time qu'un enum ne contient pas plus qu'un certain nombre d'étiquettes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    enum TESTBLK {
    toto,
    tutu,
    titi,
    flugudu,
    flagada,
    TESTBLK_SIZE
    }
     
    #if ( TESTBLK_SIZE >5 ) 
    # error enum TESTBLK est trop grand
    #endif

    Evidemment TESTBLK_SIZE n'est pas une macro et n'est pas defini à cet endroit.
    Je veux vraiment que la compilation echoue si on agrandit trop cet enum
    (car dans mon projet, c'est une liste beaucoup plus longue qui ne doit pas depasser 127 pour des raison de limitations hardware et je pressens que l'évolution du logiciel va se heurter à cette limitation)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Je comprends pas trop votre usage de "TESTBLK_SIZE".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_assert(TESTBLK_SIZE<127);

  3. #3
    Membre éprouvé Avatar de pcdwarf
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 964
    Points
    964
    Par défaut
    J'avoue avoir eu des doutes. ça paraissait trop beau.
    Mais après pas mal de vérifications,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_assert(bool_constexpr, message);
    est EXACTEMENT ce dont j'avais besoin.

    bien que ça ressemble à du "vrai" code, c'est bien tout testé en compile-time et surtout il n'en reste aucune trace au runtime (j'ai vérifié, ça produit le même binaire final à l'octet près que le static_assert y soit ou non) .

    merci beaucoup.

    Je ne connaissais pas.
    Je pense que je vais user et abuser de cette fonction.

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

Discussions similaires

  1. [MySQL] Récupérer les valeurs définies dans un champ ENUM
    Par Huntress dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/07/2010, 18h55
  2. [VB.NET] Variable de type enum avec du string
    Par Mouse dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 18h22
  3. [MySQL] Valeur par défaut d'un type ENUM
    Par aliasjcdenton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/10/2004, 20h44
  4. enum??
    Par $grm$ dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 23/04/2004, 16h34
  5. [TABLE][ENUM] u champs à choix multiple ?
    Par narmataru dans le forum SQL
    Réponses: 2
    Dernier message: 04/11/2003, 10h25

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