Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Вычисляет выражение во время компиляции и выдает ошибку, если результат — 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 макросы