Compilation phases
- C++ kursu
- Uzman
- Ders 37/47
- 5 dk
C++ derleme aşamalarını öğrenirsin.
Compilation phases
C++ derlemesi dört aşamada gerçekleşir: önişleme (preprocess), derleme (compile), derleyici üretimi (assemble) ve bağlama (link). Her aşama bir öncekinin çıktısını alır.
Önişleme #include, #define ve koşullu derleme yönergelerini işler. Derleme, önişlenmiş kaynağı makineye yakın assembly koda çevirir. Üretim, assembly'i nesne dosyasına (.o) dönüştürür. Bağlama, nesne dosyalarını birleştirip çalıştırılabilir dosya üretir. Bu ayrım, hangi aracın hangi hatayı raporladığını anlamanı sağlar.
Aşama ayrıntıları
Her aşamanın çıktısı bir sonrakının girdisidir. Önişleme .cpp dosyasını .ii dosyasına çevirir; bu dosya tüm başlıkların açılmış halidir. Derleme .ii'yi .s (assembly) dosyasına çevirir. Üretim .s'yi .o (nesne) dosyasına çevirir.
Bağlama ise birden çok .o dosyasını alır, sembolleri çözer ve çalıştırılabilir dosya üretir. g++ -E main.cpp yalnızca önişleme yapar; g++ -S main.cpp derlemeye kadar gider; g++ -c main.cpp üretmeye kadar gider. Bu bayraklar her aşamayı ayrı çalıştırır.
Uygulama #define makrosu kullan
#define ANSWER 42 yaz. main içinde std::cout << ANSWER; yaz.
Başlangıç kodu
#include <iostream>
// ANSWER makrosunu burada tanımla
int main() {
// ANSWER'ı yazdır
return 0;
}Örnek çözüm
#include <iostream>
#define ANSWER 42
int main() {
std::cout << ANSWER;
return 0;
}Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 #include yönergeleri hangi aşamada işlenir?
#include <iostream>
int main() { ... }- Önişleme Doğru cevap
- Derleme
- Bağlama
- Çalıştırma
Açıklama: Önişleme, #include ve #define yönergelerini işler.
2 #define adını tamamla
#define ____ 42
#define ANSWER 42
Açıklama: ANSWER makrosu 42 değerini alır.
3 Aşamayı rolüne eşle
| Kavram | Anlamı |
|---|---|
preprocess |
#include işleme |
compile |
.cpp → .s (assembly) |
assemble |
.s → .o (object) |
link |
.o → çalıştırılabilir |