Initialisation exotique d'une union
Bonjour,
Voici un bout de code qui compile avec gcc de version antérieure à 2.5
(oui ca date)
Ca ressemble à du C, mais c'est bel et bien compilé en C++.
Code:
1 2 3
|
unsigned int i;
i = ((union toto_n {double d; unsigned int t[2];}){d:12.34}).t[1]; |
on peut l'éclaircir un peu pour la compréhension:
Code:
1 2 3 4 5 6 7 8
|
unsigned int i;
typedef union toto_n {
double d;
unsigned int t[2];
} toto_u;
i = ((toto_u){d:12.34}).t[1]; |
qui correspond au code, un peu plus à la norme:
Code:
1 2 3 4 5 6 7 8 9 10
|
unsigned int i;
typedef union toto_n {
double d;
unsigned int t[2];
} toto_u;
toto_u x;
x.d = 12.34;
i = x.t[1]; |
Enfin la on a une initialisation explicite de x, ce qui n'est pas le cas précédemment.
Quelqu'un a-t-il déjà rencontré cette syntaxe d'initialisation d'un type union ?
Je n'arrive pas à trouver mention nulle part de ce type de syntaxe...
Toute information est la bienvenue !