Özet - Derleyici iç yapıları
- C++ kursu
- Uzman
- Ders 42/47
- 5 dk
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
#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
#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?
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
template <typename ____> T identity(T x) { return x; }
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 |