Макрос _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