CodeBlanks Logo Icon CodeBlanks

static_assert

static_assert ile derleme zamanı denetimini öğrenirsin.

static_assert

static_assert, derleme zamanında bir koşulu denetleyen bir yapıdır. Koşul yanlışsa derleme durur ve bir ileti gösterilir.

Örnek: static_assert(sizeof(int) == 4, "int 4 bayt olmalı");. Koşul doğruysa hiçbir şey olmaz; kod derlenir. Bu, şablon (template) parametrelerinin ve tür özelliklerinin derleme sırasında doğrulanması için kullanılır. Çalışma zamanı maliyeti sıfırdır; çünkü denetim yalnızca derleme sırasında yapılır. C++17'den itibaren ileti seçeneklidir.

static_assert ve şablonlar

static_assert şablon (template) kodlarında sık kullanılır. Şablon parametresinin belirli özellikleri taşıyıp taşımadığını derleme zamanında denetleyebilirsin.

Örneğin static_assert(sizeof(T) >= 4, "T en az 4 bayt olmalı"); ile T türünün boyutunu denetlersin. Bu, çalışma zamanında ortaya çıkacak hataları derleme sırasında yakalar. Şablon geliştiricinin beklediği türle çağrılınca derleme başarılı olur; yanlış tür verilirse anlaşılır bir hata iletisi gösterilir.

Uygulama static_assert ile tür boyutu denetle

main içine static_assert(sizeof(int) >= 2, "int en az 2 bayt"); yaz. Ardından std::cout << "Tamam"; ile derlemenin başarılı olduğunu göster.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    // static_assert ve mesaj ekle
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    static_assert(sizeof(int) >= 2, "int en az 2 bayt");
    std::cout << "Tamam";
    return 0;
}

Beklenen çıktı

Tamam

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bileşeni anlamına eşle

Kavram Anlamı
static_assert Derleme zamanı denetimi
sizeof(int) Tür boyutu
false Derleme hatası
true Derleme devam eder

2 static_assert(false, ...) ne yapar?

main.cpp
static_assert(false, "hata");
  • Çalışma zamanında hata fırlatır
  • Uyarı verir
  • Hiçbir şey yapmaz
  • Derlemeyi durdurur Doğru cevap

Açıklama: static_assert(false, ...) derlemeyi durdurur ve ileti gösterir.

3 static_assert koşulunu tamamla

Soru
static_assert(sizeof(int) >= ____, "int en az 2 bayt");
Cevap
static_assert(sizeof(int) >= 2, "int en az 2 bayt");

Açıklama: sizeof(int) >= 2 koşulu modern sistemlerde geçerlidir.

Orta seviye bölümündeki tüm dersler