consteval
- C++ kursu
- Uzman
- Ders 5/47
- 5 dk
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
#include <iostream>
// consteval cube fonksiyonunu buraya tanımla
int main() {
// v tanımla ve yazdır
return 0;
}Örnek çözüm
#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
____ int cube(int x) { return x * x * x; }
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?
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.