Namespaces
Variants

static_assert

From cppreference.net
< c ‎ | error
Défini dans l'en-tête <assert.h>
#define static_assert _Static_assert
(depuis C11)
(supprimé en C23)

Cette macro de commodité se développe en le mot-clé _Static_assert .

Table des matières

Exemple

#include <assert.h>
int main(void)
{
    static_assert(2 + 2 == 4, "2+2 isn't 4");   // bien formé
    static_assert(sizeof(int) < sizeof(char),   // erreur de compilation
                  "this program requires that int is less than char");
}

Notes

Depuis C23, static_assert est lui-même un mot-clé, qui peut également être une macro prédéfinie, donc <assert.h> ne le fournit plus.

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.2/3 Diagnostics <assert.h> (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.2/3 Diagnostics <assert.h> (p : 135)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.2/3 Diagnostics <assert.h> (p: 186)

Voir aussi

Documentation C++ pour Static Assertion