_STATIC_ASSERT
Макрос
Вычисляет выражение во время компиляции и выдает ошибку, если результат — FALSE
.
Синтаксис
_STATIC_ASSERT(
booleanExpression
);
Параметры
booleanExpression
Выражение (включая указатели), результат вычисления которого отличен от нуля (TRUE
) или равен нулю (FALSE
).
Замечания
Этот макрос похож на _ASSERT
макросы и _ASSERTE
макросы, за исключением того, что booleanExpression
вычисляется во время компиляции, а не во время выполнения. Если результат вычисления booleanExpression
равен FALSE
(0), создается Ошибка компилятора C2466.
Пример
В этом примере проверяется, является ли sizeof
int
больше или равно двум байтам и равно ли значение 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> |
См. также
Справочник по алфавитной функции
_ASSERT
, , _ASSERTE
_ASSERT_EXPR
макросы