次の方法で共有


_STATIC_ASSERT マクロ

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

構文

_STATIC_ASSERT(
    booleanExpression
);

パラメーター

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

解説

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

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