Alternative à plusieurs instructions case switch en C

J’ai un octet de 8 bits qui représente les états de 8 commutateurs physiques. Je dois faire quelque chose de différent pour chaque permutation des commutateurs. Ma première idée a été d’écrire une instruction de 256 majuscules, mais il est rapidement devenu fastidieux de taper.

Y a-t-il une meilleure manière de faire cela?

Edit: J’aurais dû être un peu plus clair sur les fonctions. J’ai 8 boutons qui font chacun une chose. Je dois être capable de détecter si plusieurs commutateurs sont enfoncés simultanément pour pouvoir exécuter les deux fonctions en même temps.

Vous pouvez utiliser un tableau de pointeurs de fonction. Veillez à l’indexer avec une valeur positive – un caractère peut être signé. On peut se demander si cela est plus fastidieux que d’utiliser une instruction switch – mais l’exécution sera certainement plus rapide.

 #include  // prototypes int func00(void); int func01(void); ... int funcFF(void); // array of function pointers int (*funcarry[256])(void) = { func00, func01, ..., funcFF }; // call one function int main(void){ unsigned char switchstate = 0x01; int res = (*funcarry[switchstate])(); printf ("Function returned %02X\n", res); return 0; } // the functions int func00(void) { return 0x00; } int func01(void) { return 0x01; } ... int funcFF(void) { return 0xFF; } 

Vous pouvez définir un tableau de fonctions et utiliser l’octet comme index dans le tableau et appeler la fonction à la position indiquée dans le tableau.