Share via


_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

参照

参照

_ASSERT マクロ、_ASSERTE マクロ

その他の技術情報

関数リファレンス (アルファベット順)