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é

Instruction static_assert

La macro NDEBUG La macro __STDC_VERSION_ASSERT_H__


Entête à inclure

En C11 et C17, static_assert est fourni sous forme de macro par <assert.h>, comme un alias plus agréable de _Static_assert. En C23, static_assert devient directement un mot clé du langage, et l'inclusion de <assert.h> n'est plus nécessaire pour l'utiliser.

#include <assert.h>  // nécessaire pour static_assert en C11/C17

Syntaxe d'utilisation

static_assert( condition, message );

Une assertion statique est évaluée à la compilation, et non pendant l'exécution du programme. Elle est utile pour vérifier une hypothèse de portabilité : taille d'un type, alignement minimal, valeur d'une constante ou présence d'une configuration attendue.

Depuis C23, le message devient optionnel. Pour rester compatible avec C11 et C17, conservez néanmoins le message explicite.

Exemple de code

Le bloc suivant impose qu'un entier occupe au moins quatre octets sur la plate-forme de compilation.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

static_assert( sizeof( int ) >= 4, "int must use at least 32 bits" );

int main() {

    printf( "CHAR_BIT == %d\n", CHAR_BIT );
    return EXIT_SUCCESS;
}
Assertion vérifiée à la compilation

Différence avec assert

assert vérifie une situation à l'exécution et peut être désactivé par NDEBUG. static_assert vérifie une condition constante à la compilation et ne dépend pas de NDEBUG.

Sujets connexes

NDEBUG
assert
__STDC_VERSION_ASSERT_H__


La macro NDEBUG La macro __STDC_VERSION_ASSERT_H__




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