Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

C'est bizarre, mais ça marche

3 réponses
Avatar
jerome.arbez-gindre
Bonjour,

Je mes suis apperci accidentellement, que ce genre de construction
compilent :

struct toto {
struct {
u_int32_t a1 ;
} ;
struct {
u_int32_t a1 ;
} ;
} ;

Bien s=FBr, on ne peut avoir acc=E8s qu'=E0 un seul "a1"

Est-ce une birarrerie de gcc (4.1.2) ... ou est-la norme ?

Merci,

J=E9r=F4me Arbez-Gindre

3 réponses

Avatar
Marc Boyer
Le 18-09-2006, a écrit :
Je mes suis apperci accidentellement, que ce genre de construction
compilent :

struct toto {
struct {
u_int32_t a1 ;
} ;
struct {
u_int32_t a1 ;
} ;
} ;

Bien sûr, on ne peut avoir accès qu'à un seul "a1"

Est-ce une birarrerie de gcc (4.1.2) ... ou est-la norme ?


Ben, les structures anonymes sont une extension GCC.
Après, faut donc regarder comment ils spécifient cette
extension pour vérifier si ceci est un bug ou pas.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)

Avatar
Pierre Maurette

Bonjour,

Je mes suis apperci accidentellement, que ce genre de construction
compilent :

struct toto {
struct {
u_int32_t a1 ;
} ;
struct {
u_int32_t a1 ;
} ;
} ;

Bien sûr, on ne peut avoir accès qu'à un seul "a1"

Est-ce une birarrerie de gcc (4.1.2) ... ou est-la norme ?


u_int32_t ?

VC++ et Borland 5.5, même comportement, logique. Erreur de
redéfinition, et en remplaçant un a1 par a2, pas de problème.

Vérification: avec gcc, on a un sizeof de 8.

--
Pierre Maurette

Avatar
jerome.arbez-gindre


Bonjour,

Je mes suis apperci accidentellement, que ce genre de construction
compilent :

struct toto {
struct {
u_int32_t a1 ;
} ;
struct {
u_int32_t a1 ;
} ;
} ;

Bien sûr, on ne peut avoir accès qu'à un seul "a1"

Est-ce une birarrerie de gcc (4.1.2) ... ou est-la norme ?


u_int32_t ?

VC++ et Borland 5.5, même comportement, logique. Erreur de
redéfinition, et en remplaçant un a1 par a2, pas de problème.

Vérification: avec gcc, on a un sizeof de 8.

--
Pierre Maurette



Effectivement, en allant voir :

http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Unnamed-Fields.html#Unnamed-Fie lds

La détection des doublons n'est pas encore implémentées.

Merci à tous les deux.