_STATIC_ASSERTМакрос

Вычисляет выражение во время компиляции и выдает ошибку, если результат — FALSE.

Синтаксис

_STATIC_ASSERT(
    booleanExpression
);

Параметры

booleanExpression
Выражение (включая указатели), результат вычисления которого отличен от нуля (TRUE) или равен нулю (FALSE).

Замечания

Этот макрос похож на _ASSERT макросы и _ASSERTE макросы, за исключением того, что booleanExpression вычисляется во время компиляции, а не во время выполнения. Если результат вычисления booleanExpression равен FALSE (0), создается Ошибка компилятора C2466.

Пример

В этом примере проверяется, является ли sizeofint больше или равно двум байтам и равно ли значение sizeoflong одному байту. Программа не будет компилироваться, и она создаст ошибку компилятора C2466 , так как long больше 1 байта.

// crt__static_assert.c

#include <crtdbg.h>
#include <stdio.h>

_STATIC_ASSERT(sizeof(int) >= 2);
_STATIC_ASSERT(sizeof(long) == 1);  // C2466

int main()
{
    printf("I am sure that sizeof(int) will be >= 2: %d\n",
        sizeof(int));
    printf("I am not so sure that sizeof(long) == 1: %d\n",
        sizeof(long));
}

Требования

Макрос Обязательный заголовок
_STATIC_ASSERT <crtdbg.h>

См. также

Справочник по алфавитной функции
_ASSERT, , _ASSERTE_ASSERT_EXPR макросы