_STATIC_ASSERT マクロ
結果がの場合 FALSE 式をコンパイル時に評価されエラーが発生します。
_STATIC_ASSERT(
booleanExpression
);
パラメーター
- booleanExpression
以外 (TRUE) または 0 に評価される式 (など)FALSE ポインター ()。
解説
このマクロは _ASSERT と _ASSERTE マクロ に似ていますがbooleanExpression は実行時ではなくコンパイル時に評価されます。booleanExpression が FALSE (0) と評価されるとコンパイラ エラー C2466 が生成されます。
使用例
この例ではsizeof が int より大きいか等しいかどうかを確認し2 バイト単位に sizeof が long 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:: デバッグ :: Assert