Plutot que de caster vers une struct, cast vers un union. C'est la méthode qu'on utilise fréquemment quand on veut éviter que le compilateur se retrouve avec deux types différents pour un même pointeur dans son arbre, ce qui cause plus tard des problèmes marrants. On l'utilise plus pour caster des types simples à d'autre, cela dit, mais ca marche aussi.
Exemple:
Code :
- typedef union {
- int array[5][5];
- int * t;
- } myunion;
- #define CAST_TO_ARRAY(myvar) (((myunion *)(myvar))->array)
- ...
- void f(int __t[])
- {
- printf("%d\n", CAST_TO_ARRAY(__t)[3][2]);
- }
|
Bien évidemment, c'est pas un vrai cast (on ne peut caster que vers des types scalaires, pas des agregats). Mais au moins, c'est la solution couramment retenue, et qui est propre (bien plus que de caster comme un barbare, qui entraine plus tard les problèmes que je mentionne au dessus).
N'importe quoi.
Message édité par Gf4x3443 le 21-09-2008 à 13:03:34
---------------
Petit guide Kerberos pour l'administrateur pressé