Поделиться через


Макрос _STATIC_ASSERT

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

_STATIC_ASSERT(
    booleanExpression
);

Параметры

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

Заметки

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

Пример

В этом примере мы проверяем, является ли sizeof int большим или равным 2 байтам и является ли sizeof long равным одному байту. Программа не будет компилироваться и сгенерирует Ошибка компилятора 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>

Эквивалент в .NET Framework

System::Diagnostics::Debug::Assert

См. также

Ссылки

Макрос _ASSERT, _ASSERTE

Другие ресурсы

Алфавитный указатель функций CRT