_STATIC_ASSERT makro

Evaluasi ekspresi pada waktu kompilasi dan hasilkan kesalahan saat hasilnya adalah FALSE.

Sintaks

_STATIC_ASSERT(
    booleanExpression
);

Parameter

booleanExpression
Ekspresi (termasuk pointer) yang mengevaluasi ke nonzero (TRUE) atau 0 (FALSE).

Keterangan

Makro ini menyerupai _ASSERT makro dan _ASSERTE , kecuali yang booleanExpression dievaluasi pada waktu kompilasi alih-alih pada runtime. Jika booleanExpression mengevaluasi ke FALSE (0), Compiler Error C2466 dihasilkan.

Contoh

Dalam contoh ini, kami memeriksa apakah sizeof nilainya int lebih besar dari atau sama dengan 2 byte dan apakah sizeof byte adalah long 1. Program tidak akan dikompilasi dan akan menghasilkan Compiler Error C2466 karena long lebih besar dari 1 byte.

// 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));
}

Persyaratan

Makro Header yang diperlukan
_STATIC_ASSERT <crtdbg.h>

Baca juga

Referensi fungsi alfabet
_ASSERT, _ASSERTE, _ASSERT_EXPR makro