1

Si j'ai le code suivant avec type qui peut être n'importe quel type du C :
typedef union { type *ptr; const type *cptr; } s_union_type_t; static inline const type * s_const_cast(type *ptr) { s_union_type_t u; u.ptr = ptr; return u.cptr; }
est-ce que ce code est 100% compliant avec la norme C ? (99 / 11)
(J'ai un doute).

2

Non, cette utilisation de union n'est pas autorisée par la norme C. GCC l'autorise (extension documentée) et, à ma connaissance, les autres compilateurs le permettent aussi en pratique, mais ce n'est pas standard. La valeur d'un membre d'une union après écriture d'un autre membre n'est pas définie dans la norme.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Je reformule ma question:
est-ce que la représentation objet de type* peut être différente de la représentation objet de const type * ?

4