Code :
- enum MODE { SPOOL };
- enum MODE test1 ; //instance enum
- MODE test2 ; //erreur de compilation
- typedef enum MODE MODE_t; //'enum MODE' est le type, 'MODE_t' le synonyme
- enum MODE_t test3; //incorrect, mais ça passe ?
- MODE_t test4 ; //instance typedef
|
Code :
- typedef enum MODE { SPOOL } MODE_t; //crée l'énumération et le synonyme en même temps
- typedef enum { SPOOL } MODE_t; //idem, le nom de l'enum est optionnel
|
Code :
- enum MODE { SPOOL };
- typedef enum MODE MODE; //typedef et enum de même noms, on a le droit
- typedef enum MODE { SPOOL } MODE; //forme groupée
- enum MODE test5; //instance enum
- MODE test6; //instance typedef
|
Ça marche pareil avec struct.
Il est courant de voir:
Code :
- typedef struct Node{
- struct Node* pnext; //typedef pas encore dispo
- }Node; //typedef 'Node' synonyme de 'struct Node'
- struct Node node1; //on peut toujours faire comme ça...
- 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