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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !