_STATIC_ASSERT
マクロ
コンパイル時に式を評価し、結果が FALSE
の場合にエラーを生成します。
構文
_STATIC_ASSERT(
booleanExpression
);
パラメーター
booleanExpression
ゼロ以外 (TRUE
) またはゼロ (FALSE
) に評価される式 (ポインターを含む)。
解説
このマクロは、実行時ではなくコンパイル時に評価される点をbooleanExpression
除いて、マクロと_ASSERTE
似ています_ASSERT
。 booleanExpression
が FALSE
(0) に評価される場合、コンパイラ エラー C2466 が生成されます。
例
この例では、int
の sizeof
が 2 バイト以上かどうか、および long
の sizeof
が 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> |
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示