de char** à void** - C - Programmation
Marsh Posté le 03-04-2004 à 21:55:38
comme déjà expliqué, seules les conversions T* <-> void* sont implicites. or ici, il faut faire 2 converstions successives, le compilateur ne le fait pas. donc à toi de rajouter le cast comme il faut. et tu le fait très bien (c'est bien de vouloir comprendre et pas de caster directement)
gen_ptr = ptr ; // char* -> void* 1ère conversion
&gen_ptr; // void** -> void** ok
sinon, (void**) &s vas y doucement, en connaissance de cause
Marsh Posté le 03-04-2004 à 22:03:40
Ok merci bien
par contre le cast direct en (void**) me sort un autre warning (peut-être dû à mes options de compilation)
warning: dereferencing type-punned pointer will break strict-aliasing rules
De toute façon si les compilos aiment pas, mieux vaut expliciter en effet
Marsh Posté le 03-04-2004 à 22:18:15
-Wstrict-aliasing + -fstrict-aliasing provoque l'erreur, c'est normal. j'ai merdé, je suis pas capable de faire ce que je dis moi même
(void*) &s // 1ere converstion
l'autre conversion peut être faite implicitement
mais sinon, c'est
(void**)(void*) &s;
Marsh Posté le 03-04-2004 à 21:44:21
Bonsoir tout le monde
Ya un truc qui me turlupinait depuis quelque temps, cf. le code suivant :
GCC (MinGW) me sort ceci :
warning: passing arg 1 of `test' from incompatible pointer type
Alors comment faire pour éviter ce warning sans faire ceci ?
(c'est pas équivalent mais c'est juste pour donner un exemple)
merci !
Message édité par leneuf22 le 03-04-2004 à 21:46:15