Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1507 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  typedef enum kesako?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

typedef enum kesako?

n°221162
avander
Posté le 27-09-2002 à 09:50:21  profilanswer
 

Bonjour à tous,  
 
Il n'y a pas si longtemps que je me suis (re)mis au C et j'aimerais connaître toutes les nuances de l'instruction suivante :  
...
   typedef enum { SPOOL, PRINT, OFFLINE } MODE;
...
 
Je comprend les instructions 'typedef' et 'enum' séparément mais quand on les utilises ensemble je suis troublé:
 
1) est-ce une déclaration ( qui n'utilise pas de mémoire) ou une définition ( qui prend de la place mémoire).  
 
2) quel type de variable générique sera utilisé finalement (manifestement c'est un type int)
 
Quand on déclare une variable de type MODE comme dans :
...
       MODE iMode;        
...
Est-il sous-entendu qu' iMode ne peut prendre une autre valeur que ceux repris dans l'enum? Donc :
...
       iMode = SPOOL; // c'est Ok
       iMode = 99;    // ca donne une erreur à la compil???
 
Est-ce qu'il y a d'autres effets secondaires auquel je n'ai pas pensé?
 
Merci de m'éclairer à ce sujet. Avander.


Message édité par avander le 27-09-2002 à 09:54:45

---------------
A thing of beauty is a joy forever (John Keats)
mood
Publicité
Posté le 27-09-2002 à 09:50:21  profilanswer
 

n°221175
Combi_A_Ve​ndre
Posté le 27-09-2002 à 10:04:11  profilanswer
 

En faisant ça tu déclare un nouveau type qui s'appelle MODE.
Le compilateur le verra comme un type au meme titre que int ou char.
iMode = 99; Comme la régle des enum s'applique à MODE, çane plantera pas mais ce n'est pas terrible.


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°221635
Musaran
Cerveaulté
Posté le 28-09-2002 à 02:14:55  profilanswer
 

Code :
  1. enum MODE { SPOOL };
  2. enum MODE test1  ; //instance enum
  3.      MODE test2  ; //erreur de compilation
  4. typedef enum MODE MODE_t; //'enum MODE' est le type, 'MODE_t' le synonyme
  5. enum MODE_t test3; //incorrect, mais ça passe ?
  6. MODE_t test4     ; //instance typedef


Code :
  1. typedef enum MODE { SPOOL } MODE_t; //crée l'énumération et le synonyme en même temps
  2. typedef enum      { SPOOL } MODE_t; //idem, le nom de l'enum est optionnel


Code :
  1. enum MODE { SPOOL };
  2. typedef enum MODE MODE; //typedef et enum de même noms, on a le droit
  3. typedef enum MODE { SPOOL } MODE; //forme groupée  
  4. enum MODE test5; //instance enum
  5.      MODE test6; //instance typedef

Ça marche pareil avec struct.
Il est courant de voir:

Code :
  1. typedef struct Node{
  2. struct Node* pnext; //typedef pas encore dispo
  3. }Node; //typedef 'Node' synonyme de 'struct Node'
  4. struct Node node1; //on peut toujours faire comme ça...
  5.        Node node2; //...mais plus besoin de s'embêter !


1)
C'est une définition d'une enum et d'un typedef en même temps, mais ces définitions-là ne génèrent pas de code compilé: pas d'allocation.
 
2)
En C c'est un int.
En C++, c'est un type intégral 'suffisamment grand'.
 
3)
En C iMode = 99; est accepté, malheureusement.
En C++, il faut un cast: iMode = (MODE)99;. Il est question d'accepter la règle du C par compatibilité.
Dans les deux cas, c'est pas une bonne façon de programmer.
 
 
Je pense que j'ai rien oublié.
N'hésites pas à demander des précisions au besoin.
 

Combi_A_Vendre a écrit a écrit :

The best way to accelerate a computer running windows is at 9.8m.s-2


Non ! Je resiste à la tentation (je l'ai acheté avec mon pognon).


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  typedef enum kesako?

 

Sujets relatifs
typedef dans un fichier idl (com) sous vc++[C --> Java] Quel est l'équivalent d'un enum
[C++] Truc bête : nb d'éléments d'un enum[C] "Improper use of a typedef symbol"
Programmation algorithmique Késako ?[C/C++]besoin d'aide pour les struct typedef struct etc....
[MySQL] récupérer les valeurs possibles d'un enumCFM? Késako?
Kesako un "language orienté objet"?[ACESS] HELp !! Projet VBA endommagé ! KESAKO ??
Plus de sujets relatifs à : typedef enum kesako?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR