_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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk