C++'ta Name Mangling Hakkında Soru

Başlatan yamak, 23 Şubat 2014, 16:08:27

yamak

Mehabalar,
Şöyle bir sorum var:
Mesela iki farklı sınıfım var ve bu iki sınıfta aynı isimli fonksiyonlarım var.Derleyici derleme esnasında object file oluştururken linker'ın bu aynı isimli fonksiyonları ayırt etmesi için ne gibi bir yol izliyor.Burada da bir nevi name mangling işlemimi uyguluyor.Name Mangling sadece overload edilmiş fonksiyonlarda mı kullanılıyor yoksa bu gibi durumlarda da kullanılıyor mu?

mufitsozen

sayin @yamak erbay bu konuarda ustaddir ama ben o cevap vermeden once bildiklerimi yazayim, yanlisim varsa o bunlari duzeltir.


  • c++ standardinda belirlenen bir name mangling yoktur, dolayisi ile bu her compilera gore degisir
  • yinede ayni platform icin (ornegin windows) icin degisik compilerlar compatible olmak icin benzer name mangling yaparlar (birinde uretilen obj oburundede gecerli olsun diye
  • Genel kural olarak name mangling ayni isimli bir tanimlamada module, fonksiyon, class, structure, namesspace, vb icinde tanimlanan veri tipleri hakkindaki semantik bilgiyi compilerdan linkera gecirmekte kulanilirlar
  • c++ name mangling yapilan tek dil değildir. Delphi, Java, Python vb gibi dillerde bu teknigi kullanirlar

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.