_STATIC_ASSERT マクロ
更新 : 2007 年 11 月
コンパイル時に式を評価し、結果が FALSE の場合にエラーを生成します。
_STATIC_ASSERT(
booleanExpression
);
パラメータ
- booleanExpression
0 (FALSE) または 0 以外 (TRUE) になる式 (ポインタ値を含む)。
解説
このマクロは、booleanExpression が実行時にではなくコンパイル時に評価される点を除き、_ASSERT マクロと _ASSERTE マクロに似ています。booleanExpression が FALSE (0) に評価される場合は、コンパイラ エラー C2466 が生成されます。
使用例
この例では、int の sizeof が 2 バイト以上かどうか、また long の sizeof が 1 バイトかどうかをチェックします。long が 1 バイトより大きいため、プログラムはコンパイルされず、コンパイラ エラー C2466 が生成されます。
// 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