#include <stddef.h> // <cstddef> en C++
#define unreachable() /* Définition dépendante de l'implémentation */
La macro unreachable, introduite par C23, indique au compilateur qu'un point du programme ne peut pas être atteint. Cette
information peut l'aider à optimiser le code ou à supprimer des chemins d'exécution impossibles.
Cette macro doit être utilisée avec beaucoup de prudence. Si l'exécution atteint réellement un appel à unreachable, le
comportement du programme devient indéfini.
L'exemple suivant utilise unreachable dans le cas par défaut d'un switch, lorsque toutes les valeurs valides ont
normalement déjà été traitées.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <stddef.h> #include <stdio.h> #include <stdlib.h> enum Status { STATUS_OK, STATUS_ERROR }; const char * statusToString( enum Status status ) { switch ( status ) { case STATUS_OK: return "OK"; case STATUS_ERROR: return "ERROR"; default: unreachable(); } } int main() { printf( "%s\n", statusToString( STATUS_OK ) ); return EXIT_SUCCESS; } |
Les résultats produits par cet exemple sont :
OK
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :