Erdem hocam tekrar teşekkürler ilginiz için.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Thread overview | |||||
---|---|---|---|---|---|
|
February 10, 2018 forward declare nedir ? | ||||
---|---|---|---|---|
| ||||
Erdem hocam tekrar teşekkürler ilginiz için. -- |
February 11, 2018 forward declare nedir ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Bende örnek vermek istedim, Diyelim ki iki tane sınıfımız var birisi A.h dosyasında A isimli bir class #include "B.h" Ve B.h dosyasında B isimli bir class #include "A.h" İki dosyanın birbirine bağımlılığı var. Include işlemi kopyala yapıştır gibi bir şey olduğundan yukardaki durum "circular dependency" oluşturur. Ve kod derlenmez. Bu kodlayama yeni başlayanlar için(benim ilk projemde olmuştu) bütün projeyi açmaza sürekleyebilir. Ali abimizin dediği gibi bu işi şöyle "forward declaretion" ile çözebiliriz: class B; //-> derleyici için bu yeterli. class A class A; class B Tabi sadece referans ve pointer olarak tanımladı isek forward declare edebiliriz. ******** Burası biraz detay ************** ******** Bu bence önemli yine *********** dedigimiz anda artık işin içinden "forward declaration" ile çıkamayız. Artık ne yazıkki #include "B.h" yapmalıyız. Ne yazıkki diyorum çünkü #include komutları derleme zamanını artırdığından "forward declare" tercih edilmelidir. Son olarak bir önceki sorudaki konumuz olan enum class kullanılmaz ise enum lar forward declare edilemezler küçüçük bir enum için koskaca bir dosya almamız gerekebilir. Erdem -- |
February 10, 2018 forward declare nedir ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to hsencan | Bir ismin (symbol) ne olduğunu tanımını vermeden bildirmetkir. Örneğin,
yazıldığında foo'nun double parametre alan ve int döndüren bir işlev olduğu anlaşılır. O kadarı, o işlevi çağıran diğer kodlar için yeterlidir çünkü derleyicinin tek yaptığı, "bu noktada foo'yu bu değişkenin değeriyle çağır ve dönüş değerini şu değişkene ata" anlamına gelen kodlar üretmektir. foo'nun tanımının nerede olduğu programın bağlanması (linking) aşamasına kadar bilinmez. Bağlayıcı nerede bulduysa "foo'yu çağır" bilgisini "şu adresteki kodu işlet" olarak değiştirir. Ali -- |