CodeBlanks Logo Icon CodeBlanks

Özet - Derleyici iç yapıları

AST, instantiation ve linker'ı birleştirerek bir kod analiz aracı yazarsın.

Özet - Derleyici iç yapıları

Bu grupta derleyici iç yapılarını gördün: compilation phases, AST, template instantiation, linker ve optimization. Hepsi kaynak kodun çalıştırılabilir dosyaya dönüşmesini sağlar.

Şimdi bunları bir constexpr + fonksiyon örneğinde birleştireceksin. constexpr int base = 10; sabitini ve add fonksiyonunu bir arada kullanacaksın; bu, derleme aşamalarının ve optimizasyonun nasıl birlikte çalıştığını gösterir.

Derleme birleşimi

Bir program derlendiğinde dört aşama sırayla işler. constexpr int base = 10; önişlemede kalır, derlemeden AST'ye girer, eniyileme ile sabit katlama yapılır ve bağlamada somut 10 olarak çalıştırılabilir dosyaya gömülür.

Bu birleşmeyi görmek için: constexpr int base = 10; int add(int x) { return x + base; }. Derleyici base'i sabit katlama ile doğrudan 10 yapar; add(5) çağrısı eniyilenmiş kodla 15 döndürür. Tüm bunlar derleme sırasında olur; çalıştırma anında hazır olur.

Uygulama constexpr + add birleştir

constexpr int base = 10; tanımla. int add(int x) yaz; gövdesi return x + base;. main içinde std::cout << add(5); yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// base constexpr sabitini ve add fonksiyonunu burada tanımla

int main() {
    // add'i çağır ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

constexpr int base = 10;

int add(int x) {
    return x + base;
}

int main() {
    std::cout << add(5);
    return 0;
}

Beklenen çıktı

15

Soru ve cevaplar

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

1 Linker hangi aşamada çalışır?

main.cpp
g++ -c main.cpp  // .o üretir
g++ main.o -o program  // linker
  • Önişleme
  • Bağlama (son aşama) Doğru cevap
  • Derleme
  • Çalıştırma

Açıklama: Linker, derleme aşamalarının sonuncusudur.

2 Şablon tanımını tamamla

Soru
template <typename ____> T identity(T x) { return x; }
Cevap
template <typename T> T identity(T x) { return x; }

Açıklama: typename T, şablon tür parametresidir.

3 Aracı özelliğine eşle

Kavram Anlamı
preprocess #include işleme
AST Sözdizim ağacı
instantiation Şablon örnekleme
linker Nesneleri birleştirir

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