...j'ai regarde l'expemle
J'ai lu un des exemples cités
enum permet en fait. de remplacer une serie de chiffre
par des constantes symboliques en affectant une valeur a cette serie de constante
Code:
enum fruits { BANANE, ORANGE, POMME, FRAISE, KIWI };
donc par defaut
BANANE vaut 0
ORANGE vaut 1
...
Vous me dites avec l'enrichissement d'un fichier externe on arrive a definir en fait a remplacer BANANE par "banane".
Tres bien ... Pour une seule colonne ... la designation ...
Cela ne presente pas d'interet
Code:
1 2
| #define BANANE "banane"
#define ORANGE "orange" |
...
a le meme effet
Il est clair qu'a partir de 2 colonnes c'est bien.
Mais un peu hardu non ?
Utilison des define
Code:
1 2
| #define BANANE "banane","100 grammes"
#define ORANGE "orange","25 grammes" |
... structure de fichier en colonne ... Comme l'autre
La methode citee dans l'exemple permet de faire un truc du style
"banane", "100 grammes"... Ce que peut faire aussi le define je viens de le verifier
Mais "100 grammes","banane" ... la le define semble etre out
ainsi que pour ignorer une colonne
Mais il en a sous la semelle
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #define BANANE "banane","100 grammes"
#define ORANGE "orange","25 grammes"
... // le fichier inclu contenant les define
#define solo_poids(fruit,poids) poids
// la macro ci dessus permet sans doute de ne voir que certaines
// colonnes et ds un ordre désire
void poids_du_fruit(char * fruit,char * ch) // fonction contenant structure complete
{
char ch1[100];
strcpy(ch1,solo_poids(fruit,ch));
....
}
int main( int argc, char ** argv )
{
poids_du_fruit(BANANE); // on ne passe que la constante symbolique
poids_du_fruit(ORANGE); // on peut donc definir des fonction quelconques
} |
Ca compile ...
Pas besoins de definir enum ... on met nos define ds le fichier inclus
La victoire de enum... sur define est pas ecrasante pour l'exemple cite
... Pas eu besoin d'enumerer BANANE,ORANGE....
Quelle est la solution la plus elegante ?
La solution enum a t elle un avantage ?
Par contre , linitialisation à 0,1,2... ca c'est valable c sur.. pour la clarté d'un programme, c'est une evidence. On a juste a definir le nom dans le enum.