typedef enum kesako? - C++ - Programmation
Marsh Posté le 27-09-2002 à 10:04:11
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.
Marsh Posté le 28-09-2002 à 02:14:55
Code :
|
Code :
|
Code :
|
Ça marche pareil avec struct.
Il est courant de voir:
Code :
|
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).
Marsh Posté le 27-09-2002 à 09:50:21
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)