Parcourir ce sujet :
1 Utilisateur(s) anonymes
[decouverte] enum et typedef enum |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
23/10/2005 11:40 De Aix les Bains (73)
Messages:
1943
![]() |
Encore un pense bête pour moi qui découvre les enum et surtout les typedef enum
Les enum permettent de définir des équivalences (un peu comme #define) mais avec 2 avantages : -il n'y aura jamais 2 valeurs identiques ou 2 fois la même déclaration -Plus sur je laisse pour cela la citation de Jacques Citation : L'intérêt d'utiliser des énumérations au lieu des #define, c'est qu'avec les énumérations c'est le compilateur qui va travailler alors qu'avec les #define c'est le préprocesseur dont l'usage n'est pas un gage de fiabilité logicielle.
enum MonEnum
Si ces valeurs peuvent être associé à différentes choses on pourra utiliser les typedef enum
typedef enum MonTypeEnum
on pourra ainsi associer ces valeurs à différentes "choses"
MonTypeEnum_t UnTruc ;
freescale/NXP utilise ça pour déclarer les différents valeurs possibles des registres.
Posté le : 21/03/2016 15:21
|
|
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
|
||
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
13/10/2005 10:06 De haute-savoie (74)
Messages:
1164
![]() |
Salut
J'utilise bcp les typedef enum pour les configurations. Par exemple
typedef enum
me permet de lancer une fonction d'init avec des arguments en clair ainsi :
TPMModuleInit (TPM3, TPM_BUSRATE_CLOCK, CLOCK_DIVIDEBY_4, TPM_ENABLE_INTERRUPT, DISABLE_CENTER_ALIGNED_PWM, RREX_TICK);
Je trouve que cela facilite grandement la lecture du code et les modifications. A la fin je ne sais pas quelle est la valeur des champs, mais je m'en moque. Je me pose la question une fois à la création du champs. Par ailleurs les enum apparaissent dans le debugger également à ma connaissance dans le champs d'une variable. Donc les données s'affichent 'en clair' ++ Steph
Posté le : 23/03/2016 11:25
|
|
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Accro
![]() ![]() Inscrit:
06/07/2007 09:17 Messages:
697
![]() |
Plop all^^
Je réouvre ce sujet. Les enum, c'est tres bien en safe C. Je l'utilise pour les State Machine.
/* inside h file */
/* inside c file */
Lorsque l'on utilise un enum sur un switch, nous avons l'obligation de faire correspondre a case à chaque élément de l'enum. L'autre intérêt de l'enum et d'éviter du jardinage lors de parcourt de table:
/* inside h file */
/* inside c file */
Cependant Attention. Une variable de type enum n'aura pas forcement la taille prevue. Dans mon premier exemple, la variable MyState fait 16 bits. Ceci est configurable dans les optons du compilo. Quelqu'un pourrait-il expliquer cette configuration? :)
Posté le : 03/08/2016 09:47
|
|
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Oula !
Parole de débutant, va falloir que je potasse sérieusement ce que vous dites là . Car, mes #define font aussi bien le boulot ?!
Posté le : 03/08/2016 10:40
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Accro
![]() ![]() Inscrit:
06/07/2007 09:17 Messages:
697
![]() |
imagine un passage de parametre.
/* avec define */
avec un enum, le test du paramètre passé est plus facile car l'enum est borné par nature. avec un enum, tu reduit les risque d'erreur de codage car tu précise un type de donnée. EDIT: tu peux me tutoyer :p
Posté le : 03/08/2016 11:29
|
|
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
23/10/2005 11:40 De Aix les Bains (73)
Messages:
1943
![]() |
Salut
Ce sont des outils qui rendent le code plus lisible et sûr. En plus avec enum éclipse met du bleu dans le code et j'aime le bleu ![]() C'est un peu comme écrire un code avec 30x la même séquence plutôt que de faire une fonction qui reprend la séquence; Au final ça changera rien parce que le compilateur va optimiser mais la fonction rend le code plus lisible et si modification il y a elle sera 30x identique, pas 28 ou 29fois...
Posté le : 03/08/2016 11:40
|
|
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
|
||
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Accro
![]() ![]() Inscrit:
06/07/2007 09:17 Messages:
697
![]() |
Plop ^^
typedef enum
Quelqu'un pourrait-il me dire comment faire pour prouver (ASIL level donc recherche de la preuve ;) ) que mon enum est bien codé sur un unsigned char?
Posté le : 16/08/2016 15:44
|
|
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
27/09/2005 18:07 De Metz
Messages:
1354
![]() |
vu qu'il il y 4 éléments dans ton enum, ça doit être codé sur 4 octets.
Tu peux le mesurer en déclarant une variable du type de l'enum et en calculant sa taille avec l'opérateur sizeof
Posté le : 16/08/2016 16:59
|
|
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Accro
![]() ![]() Inscrit:
06/07/2007 09:17 Messages:
697
![]() |
Jacques, Je ne suis d'accord.
Par défaut, les enum sont taillés pour recevoir des int, soit 2 octects. Je sais que certaine(s) option(s) compilo permette(nt) de d'ajuster la taille d'un enum au plus juste... Je vais faire des check de sizeof et je vous fait un retour ;).
Posté le : 17/08/2016 08:24
|
|
![]() |
Re: [decouverte] enum et typedef enum |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
27/09/2005 18:07 De Metz
Messages:
1354
![]() |
oui, tu as raisons, c'est plutôt des int que des octets.
Posté le : 17/08/2016 10:14
|
|
![]() |
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.