Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Macro unreachable (C23)

Le type nullptr_t


Entête à inclure

#include <stddef.h>  // <cstddef> en C++

Macro unreachable

#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;
}
Signaler un chemin impossible

Les résultats produits par cet exemple sont :

OK

Sujets connexes

La librairie stddef.h
switch


Le type nullptr_t




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé