static_assert
- C++ kursu
- Orta seviye
- Ders 34/116
- 5 dk
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
#include <iostream>
int main() {
// static_assert ve mesaj ekle
return 0;
}Örnek çözüm
#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?
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
static_assert(sizeof(int) >= ____, "int en az 2 bayt");
static_assert(sizeof(int) >= 2, "int en az 2 bayt");
Açıklama: sizeof(int) >= 2 koşulu modern sistemlerde geçerlidir.