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 :

definir taille d'un enum


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut definir taille d'un enum
    Bonjour,

    Dans un programme, j'ai défini un enum : le programme fonctionnait bien avec un µControlleur 8bit => la taille de l'enum était d'1 octet.
    Voici la déclaration de l'enum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	typedef enum _SAVE_STATUS {
    	    SS_NO_TREAT = 0u,	// pas de traitement specifique a faire		
    	    SS_SAVE_OK,		 	// sauvegarde effectuée / ou traitemenet effectué correctement
    	    SS_ERROR,		 	// erreur detectée 
    	} SAVE_STATUS;
    => Le problème est que depuis que j'ai changé de µControlleur (32bits), la taille de l'enum est passée à 4 octets. J'ai besoin d'imposer la taille à 1 octet car je l'utilise dans une structure __packed__ : comment puis-je faire ?

    Merci d'avance,

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    En C, les membres d'une enumeration ont le type int. (Le C++ donne plus de controle sur le type des membres d'une enumeration.) Si sizeof (int) est 4 sur ton systeme, ce sera la taille de tes constantes.
    Deux solutions:
    - le compilateur peut permettre de changer le type de l'enum (gcc a -fshort-enums);
    - utiliser des variables a la place de constantes enumerees.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    merci pour ta réponse

    Il n'y a donc pas de solution miracle :'(
    => je vais remplacer mon enum par des #define pour ne pas tout avoir à remplacer

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    j'ai besoin d'imposer la taille à 1 octet car je l'utilise dans une structure __packed__
    Ouch, programmer en présupposant de la taille de ses variables c'est courir un super gros risque...

    Citation Envoyé par boboss123 Voir le message
    Il n'y a donc pas de solution miracle :'(
    Ben malheureusement... sauf peut-être à revoir la conception...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 821
    Points : 979
    Points
    979
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouch, programmer en présupposant de la taille de ses variables c'est courir un super gros risque...
    C'est pour ça que maintenant, je n'utilise plus les types standard du C (char, int, ..) et qu'à la place j'utilise des types définis par des #define (UINT8, UNT16, ....) : au début de chaque projet je vérifie que mes tailles sont bonne et je redéfini mes #define si besoin.


    Citation Envoyé par Sve@r Voir le message
    Ben malheureusement... sauf peut-être à revoir la conception...
    => malheureusement, je ne peux pas car je suis reparti d'une pile logicielle existante et pour garder un maximum de compatibilité (suivit de version), je dois faire un minimum de changement.

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

Discussions similaires

  1. Comment definir la taille page impression ?
    Par HASSIOMAR dans le forum Delphi
    Réponses: 3
    Dernier message: 03/01/2007, 14h46
  2. forcer la taille d'un enum
    Par tut dans le forum MFC
    Réponses: 5
    Dernier message: 29/09/2005, 15h49
  3. JPanel contenant deux JPanel definir taille de l un d eux
    Par mereyj dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/06/2005, 21h40
  4. Definir la taille d'un tableau par programmation
    Par Manix dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2005, 11h37
  5. [VB.NET] Definir taille et position d'un control
    Par Emcy dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/04/2005, 09h35

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