Namespaces
Variants

static_assert

From cppreference.net
< c ‎ | error
Определено в заголовочном файле <assert.h>
#define static_assert _Static_assert
(начиная с C11)
(удалено в C23)

Этот удобный макрос раскрывается в ключевое слово _Static_assert .

Содержание

Пример

#include <assert.h>
int main(void)
{
    static_assert(2 + 2 == 4, "2+2 isn't 4");   // корректно сформировано
    static_assert(sizeof(int) < sizeof(char),   // ошибка компиляции
                  "this program requires that int is less than char");
}

Примечания

Начиная с C23, static_assert сам по себе является ключевым словом, которое также может быть предопределённым макросом, поэтому <assert.h> больше не предоставляет его.

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.2/3 Диагностика <assert.h> (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.2/3 Диагностика <assert.h> (стр: 135)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.2/3 Диагностика <assert.h> (стр: 186)

Смотрите также

C++ документация для Static Assertion