Konuyu Açan
#0
C++20 standardı ile birlikte tanıtılan
Örneğin:
Yukarıdaki örnekte,
Sonuç olarak,
consteval, derleme zamanında kesin hesaplamalar yapmak için kullanılan bir anahtar kelimedir. consteval ile işaretlenmiş bir fonksiyon, yalnızca derleme zamanında değerlendirilebilir. Bu, programın çalıştırılması sırasında değil, derleme aşamasında belirli bir değerin hesaplanması gerektiği durumlar için oldukça faydalıdır. consteval anahtar kelimesinin amacı, bir fonksiyonun kesinlikle derleme zamanında çağrılması gerektiğini belirtmektir. Eğer bir consteval fonksiyonu çalışma zamanında çağrılmaya çalışılırsa, derleyici hata verecektir. Bu durum, kodun daha güvenilir ve performanslı olmasını sağlar, çünkü derleyici bu tür hesaplamaları optimize edebilir.Örneğin:
CODE
12345678consteval int square(int x) {
return x * x;
}
int main() {
constexpr int result = square(5); // Derleme zamanı hesaplaması
// int invalid = square(10); // Hata! Derleme zamanında çağrılmalı
}Yukarıdaki örnekte,
square fonksiyonu consteval olarak tanımlandığı için sadece derleme zamanında değerlendirilebilir. result değişkeni, square(5) ifadesinin sonucu olan 25'i alır. Ancak, square(10) ifadesinin çalışma zamanı sırasında çağrılması bir hata ile sonuçlanır.consteval ile birlikte kullanılan diğer bir anahtar kelime de constexprdir. constexpr, bir fonksiyonun hem derleme zamanında hem de çalışma zamanında değerlendirilebileceğini belirtirken, consteval yalnızca derleme zamanı için geçerlidir. Bu iki anahtar kelime, C++ dilinde daha güvenli ve verimli kod yazma imkanı sunar.Sonuç olarak,
consteval anahtar kelimesi, C++20 ile gelen önemli bir yenilik olup, derleme zamanında kesin hesaplamalar yaparak, kodun performansını artırma ve hata olasılığını azaltma amacı taşır.