[gull] Subtilité de C n° 4 : déclaration de struct
Marc Mongenet
marc at mongenet.ch
Tue Apr 15 02:37:21 CEST 2008
Je n'ai été au point avec cette subtilité qu'en relisant
le K&R suite aux discussions de la subtilité de C n° 2.
Autrement dit, j'ai souvent déclaré des structures
sans vraiment comprendre ce que je faisais :
je me contentais de constater que ça marchait,
ce qui est pourtant fort risqué en C...
Mais pour une fois, le risque apparaît très faible :
je n'ai jamais rencontré de problème (de portabilité
ou autre) malgré ma négligence.
Ce n'est cependant pas une raison pour bidouiller
plus longtemps !
Voici donc le Quiz :
Parmi les deux exemples suivants, un seul compile
(avec gcc -c -ansi -pedantic). Lequel ? Pourquoi ?
----------------------- ex1.c
struct s { int i; } v;
struct s;
void f(void) {
struct ps { struct s *p; } ps;
struct s { int j; } v;
ps.p = &v;
ps.p->j = 0;
}
----------------------- ex2.c
struct s { int i; } v;
void f(void) {
struct s;
struct ps { struct s *p; } ps;
struct s { int j; } v;
ps.p = &v;
ps.p->j = 0;
}
-----------------------
NB : La seule différence est la position du « struct s; ».
--
Marc Mongenet
Creator of the Web 2 Markup Language
http://w2ml.com
More information about the gull
mailing list