8Fermer10
BrunniLe 14/04/2009 à 16:32
Pour le type bool tu peux écrire un truc du genre:
typedef enum {false=0, true=1} bool;
Mais ce n'est pas forcément optimal étant donné qu'on ne sait pas la taille que le compilo réservera à l'enum. Donc ça peut très bien être 32 bits, à vérifier avec sizeof(bool). Sinon une autre solution:
typedef unsigned char bool;
enum {false=0, true=1};

Ainsi en déclarant un bool tu déclares en fait un unsigned char (8 bits) et ensuite tu utilises des constantes de l'énumération que tu définis après.
Concernant le warning je n'étais pas au courant, ça fait longtemps que je n'ai plus codé sur TI sad
Une table de saut se fait soit avec un switch (mais vérifie le code qu'il te génère, ça peut être plus dégueulasse qu'autre chose), soit avec des fonctions. Par exemple (bidon):
// Définit qu'un cri est une fonction prenant 0 paramètre
typedef void (*cri_t)();

void criChien() { printf("Waf"); }
void criChat()  { printf("Miaou"); }

cri_t cris[] = {criChien, criChat};
const char *textesCris[] = {"chien", "chat"};

void main() {
    int i;
    printf("Sélectionnez un animal:\n");
    for (i = 0; i < 2; i++)
        printf("  - %s\n", textesCris[i]);
    scanf("%i", &i);
    // Saute à la bonne fonction
    cris[i]();
}

Par contre il y a un certain overhead niveau fonction, surtout sur 68k. Autant sur d'autres plate-formes tu as vraiment avantage de faire comme ça, autant là c'est à toi de voir ^^