CodeBlanks Logo Icon CodeBlanks

consteval

C++20 consteval ile derleme zamanı zorunluluğu öğrenirsin.

consteval

consteval (C++20), fonksiyonun yalnızca derleme zamanında çalışmasını zorlar. constexpr gibi davranır ama değişken argümanla çağrı derleme hatasıdır. Örnek: consteval int cube(int x) { return x * x * x; }.

cube(3) derleme zamanında 27 olur. Ama int n; std::cin >> n; cube(n); derleme hatası verir; çünkü n derleme zamanı sabiti değildir. consteval, hesabın kesinlikle derleme zamanında yapılmasını istediğinde kullanılır.

consteval vs constexpr

constexpr esnektir: sabit argümanla derleme, değişken argümanla çalışma zamanında çalışır. consteval katıdır: yalnızca derleme zamanında çalışır, değişken argüman derleme hatasıdır. Bir hesabın çalıştırılabilir dosyada sabit olarak gömülmesini istiyorsan consteval seç.

Örneğin bir tablo hazırlıyorsan consteval ile değerleri derleme zamanında üretirsin; çalışma zamanında tablo hazır olur. Bu, önyükleme (boot) süresini kısaltır.

Uygulama consteval cube yaz

consteval int cube(int x) fonksiyonunu return x * x * x; gövdesiyle yaz. main içinde constexpr int v = cube(3); tanımla ve std::cout << v; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// consteval cube fonksiyonunu buraya tanımla

int main() {
    // v tanımla ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

consteval int cube(int x) {
    return x * x * x;
}

int main() {
    constexpr int v = cube(3);
    std::cout << v;
    return 0;
}

Beklenen çıktı

27

Soru ve cevaplar

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

1 Anahtar kelimeyi tamamla

Soru
____ int cube(int x) { return x * x * x; }
Cevap
consteval int cube(int x) { return x * x * x; }

Açıklama: consteval zorunlu derleme zamanı sağlar.

2 Çağrıyı sonucuna eşle

Kavram Anlamı
cube(1) 1 döner
cube(2) 8 döner
cube(3) 27 döner
cube(4) 64 döner

3 consteval cube(int n) çağrısı ne zaman derleme hatasıdır?

main.cpp
int n;
std::cin >> n;
int r = cube(n);
  • Asla
  • n değişken olduğunda Doğru cevap
  • n sabit olduğunda
  • Yalnızca hata ayıklama modunda

Açıklama: consteval, değişken argümanla derleme hatası verir.

Uzman bölümündeki tüm dersler