Aracılığıyla paylaş


Çeviri aşamaları

C ve C++ programları, her biri programın bazı metinlerini içeren bir veya daha fazla kaynak dosyadan oluşur. Kaynak dosya, dahil dosyalarıyla birlikte önişlemci yönergesi kullanılarak #include dahil edilen ancak gibi #ifkoşullu derleme yönergeleri tarafından kaldırılan kod bölümlerini içermeyen dosyalar çeviri birimi olarak adlandırılır.

Kaynak dosyalar farklı zamanlarda çevrilebilir. Aslında, yalnızca güncel olmayan dosyaları çevirmek yaygın bir durum. Çevrilen çeviri birimleri ayrı nesne dosyalarına veya nesne kodu kitaplıklarına işlenebilir. Bu ayrı, çevrilmiş çeviri birimleri daha sonra yürütülebilir bir program veya dinamik bağlantı kitaplığı (DLL) oluşturmak için bağlanır. Bağlayıcıya giriş olarak kullanılabilecek dosyalar hakkında daha fazla bilgi için bkz . LINK giriş dosyaları.

Çeviri birimleri şu şekilde iletişim kurabilir:

  • Dış bağlantısı olan işlevlere çağrılar.

  • Dış bağlantısı olan sınıf üyesi işlevlerine çağrılar.

  • Dış bağlantısı olan nesnelerin doğrudan değiştirilmesi.

  • Dosyaların doğrudan değiştirilmesi.

  • İşlemler arası iletişim (yalnızca Microsoft Windows tabanlı uygulamalar için).

Aşağıdaki listede, derleyicinin dosyaları çevirdiği aşamalar açıklanmaktadır:

Karakter eşleme
Kaynak dosyadaki karakterler iç kaynak gösterimine eşlenir. Trigraf dizileri bu aşamada tek karakterli iç gösterime dönüştürülür.

Çizgili dilimleme
Bir ters eğik çizgiyle (\) hemen ardından yeni satır karakteriyle biten tüm satırlar, fiziksel çizgilerden mantıksal çizgiler oluşturarak kaynak dosyadaki bir sonraki satırla birleştirilir. Boş olmadığı sürece, kaynak dosyanın başında ters eğik çizgi olmayan yeni satır karakteri olması gerekir.

Tokenization
Kaynak dosya ön işleme belirteçlerine ve boşluk karakterlerine ayrılmıştır. Kaynak dosyadaki açıklamalar her biri bir boşluk karakteriyle değiştirilir. Yeni satır karakterleri korunur.

Ön
Ön işleme yönergeleri yürütülür ve makrolar kaynak dosyaya genişletilir. deyimi, #include eklenen metinlerde önceki üç çeviri adımından başlayarak çeviriyi çağırır.

Karakter kümesi eşlemesi
Tüm kaynak karakter kümesi üyeleri ve kaçış dizileri, yürütme karakter kümesindeki eşdeğerlerine dönüştürülür. Microsoft C ve C++ için hem kaynak hem de yürütme karakter kümeleri ASCII'dir.

Dize birleştirme
Tüm bitişik dize ve geniş dize değişmez değerleri birleştirilir. Örneğin, "String " "concatenation" olur "String concatenation".

Çeviri
Tüm belirteçler bozulmadan ve tek tek analiz edilir; bu belirteçler nesne koduna dönüştürülür.

Bağlantı
Tüm dış başvurular yürütülebilir bir program veya dinamik bağlantı kitaplığı oluşturmak için çözümlenir.

Derleyici, söz dizimi hatalarıyla karşılaştığı çeviri aşamaları sırasında uyarılar veya hatalar yayımlar.

Bağlayıcı tüm dış başvuruları çözümler ve standart kitaplıklarla birlikte ayrı olarak işlenen bir veya daha fazla çeviri birimini birleştirerek yürütülebilir bir program veya DLL oluşturur.

Ayrıca bkz.

Ön İşlemci