_STATIC_ASSERT マクロ

コンパイル時に式を評価し、結果が FALSE の場合にエラーを生成します。

構文

_STATIC_ASSERT(
    booleanExpression
);

パラメーター

booleanExpression
ゼロ以外 (TRUE) またはゼロ (FALSE) に評価される式 (ポインターを含む)。

解説

このマクロは、実行時ではなくコンパイル時に評価される点をbooleanExpression除いて、マクロ_ASSERTE似ています_ASSERTbooleanExpressionFALSE (0) に評価される場合、コンパイラ エラー C2466 が生成されます。

この例では、intsizeof が 2 バイト以上かどうか、および longsizeof が 1 バイトかどうかを確認します。 プログラムはコンパイルせず、1 バイトより大きいためlong、コンパイラ エラー 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>

関連項目

アルファベット順関数リファレンス
_ASSERT_ASSERTE_ASSERT_EXPRマクロ