6Fermer8
Lionel DebrouxLe 14/04/2009 à 15:35
(merci Brunni pour l'explication plus claire que la mienne grin)
"Initialization discards qualifiers from pointer target type"

C'est par exemple quand on assigne une chaîne constante (de type const char *) à un char*, et que ce warning est activé.
Pour corriger cela, soit tu déclares ton pointeur const char * (si tu ne veux pas modifier le contenu de la chaîne), soit tu fais
char *string1 = (char *)"ABCDE";
pour être sûr que ton code ne fasse pas de warning à cet endroit-là quand le warning est activé (parfois, tu n'as pas le choix d'activer ce warning ou pas).


Tu veux donc faire une vraie table de sauts... Je ferais ça avec
switch (val) {
case 0: retval = fonction0(...); break;
case 1: retval = fonction1(...); break;
case 2: retval = fonction2(...); break;
case 3: retval = fonction3(...); break;
default: jemeplainsparcequecanauraitpasduarriver(...); break;
}

(c'est parfois utile, mais en général, c'est une mauvaise idée d'oublier les break grin)

Si tu veux des tables de string ne générant pas de relocations, tu dois le faire à la main avec de l'ASM + de l'ASM inline avec opérandes C. De mémoire, TICT S1P6 (la version que j'ai optimisée, moins lisible) et Ice Hockey 68k sont deux programmes qui font ça.