Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Derleme zamanında onayları sınar. Belirtilen sabit ifade ise false, derleyici belirtilen iletiyi görüntüler ve derleme C2338 hatasıyla başarısız olur; aksi takdirde hiçbir etkisi olmaz. C11'de yeni.
_Static_assert , C11'de tanıtılan bir anahtar sözcüktür.
static_assert , C11'de kullanıma sunulan ve anahtar sözcükle eşleyen _Static_assert bir makrodur.
Sözdizimi
_Static_assert(constant-expression, string-literal);
static_assert(constant-expression, string-literal);
Parametreler
constant-expression
Derleme zamanında değerlendirilebilecek bir tamsayı sabit ifadesi. İfade sıfır (false) ise parametresini string-literal görüntüler ve derleme bir hatayla başarısız olur. İfade sıfır olmayan (true) ise hiçbir etkisi yoktur.
string-literal
Sıfır (false) olarak değerlendirilirse constant-expression görüntülenen ileti. İleti, derleyicinin temel karakter kümesi kullanılarak yapılmalıdır. Karakterler çok baytlı veya geniş karakter olamaz.
Açıklamalar
Hem _Static_assert anahtar sözcüğü hem static_assert de makro, derleme zamanında bir yazılım onayını test edin. Genel veya işlev kapsamında kullanılabilirler.
Buna karşılık, assert makro ve _assert işlevler _wassert bir yazılım onayını çalışma zamanında test edip çalışma zamanı maliyetine neden olur.
Microsoft'a özgü davranış
C'de, eklemediğinizde <assert.h>Microsoft derleyicisi ile eşleyen static_assertbir anahtar sözcük olarak davranır_Static_assert. Aynı kod hem C hem de C++'da çalışacağından kullanmak static_assert tercih edilir.
Derleme zamanı onayı örneği
Aşağıdaki örnekte ve static_assert_Static_assert bir numaralandırmada kaç öğe olduğunu ve tamsayıların 32 bit genişliğinde olduğunu doğrulamak için kullanılır.
// requires /std:c11 or later
#include <assert.h>
enum Items
{
A,
B,
C,
LENGTH
};
int main()
{
// _Static_assert is a C11 keyword
_Static_assert(LENGTH == 3, "Expected Items enum to have three elements");
// Preferred: static_assert maps to _Static_assert and is compatible with C++
static_assert(sizeof(int) == 4, "Expecting 32 bit integers");
return 0;
}
Gereksinimler
| Makro | Gerekli başlık |
|---|---|
static_assert |
<assert.h> |
ile derleyin /std:c11.
Windows SDK 10.0.20348.0 (sürüm 2104) veya üzeri. C11 ve C17 geliştirmesi için Windows SDK'sını yükleme hakkında daha fazla bilgi için bkz . Visual Studio'da C11 ve C17 desteğini yükleme.
Ayrıca bkz.
_STATIC_ASSERT Makro
assert makro ve _assert_wassert işlevler
/std (Dil standart sürümünü belirtin)