Thread overview
C++ Yararcı(pragmatik) forward declaration
Apr 01, 2019
kerdemdemir
Apr 01, 2019
fatih (fatih)
Apr 01, 2019
kerdemdemir
Apr 03, 2019
Salih Dinçer
Apr 04, 2019
kerdemdemir
April 01, 2019

İş yerinde çok güzel bir mekanizmamız var. Şöyle ki master'a kodumuzu yollamadan önce gözetim ve onaydan geçmesi gerekiyor.
Ben std::string 'i forward declare etmem konusunda bir geri dönüş aldım.

Her ne kadar teoride doğru olsa bile pratikde hemen hemen her cpp dosyasının string ,vector gibi sınıfları dahil ettiklerinden bunları forward declare etmenin çok da bir faydasını göremiyorum. Hatta çok uzun include bloklarına sebep olduğunu düşünüyorum.

Biraz hor görüleceği için iş yerinde paylaşmadım ama sizin samimiyetinize sığınarak fikrinizi sormak istedim.

Bir sınıf her cpp dosyasında kullanılıyorsa forward declare 'i hala tercih edermisiniz ?

Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 01, 2019

Bildigim kadariyla icindekiler haric std namespace'i icindeki seyleri forward declare etmek unspecified behaviour. Dolayisiyla kodunuz direk unportable oluyor, ve ayni standard library'nin 2 versiyonu arasinda bile calismayabilir.

Onun disinda, cok fazla ayni header'lari include ediyorsaniz, su anki en uygun cozum muhtemelen bir precompiled header kullanmak. CMake kullaniyorsaniz cotire diye bir library kullaniyorum ben baya rahatlatiyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 02, 2019

Alıntı:

>

Bildigim kadariyla icindekiler haric std namespace'i icindeki seyleri forward declare etmek unspecified behaviour. Dolayisiyla kodunuz direk unportable oluyor, ve ayni standard library'nin 2 versiyonu arasinda bile calismayabilir.

Cok faydali bir bilgi oldu benim icin.

Su linkde Fatih'in soylediklerinin daha uzun aciklamasini buldum hosuma gitti.
https://blog.libtorrent.org/2017/12/forward-declarations-and-abi/

Bu arada bende precompiled header konusuna katiliyorum.

Sorumu std::string degilde QString uzerinden devam ettirsem acaba yani QString hemen hemen her modulde kullaniliyor ise forward declare etmek konusunda cok muhafazakar olmayan baska arkadaslarimiz varmidir?

Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 03, 2019

C++'da da var mı bilmiyorum, D'de yapılan her ön bildirim (forward declare) iki nokta üst üste ile ön seçimli haliyle yapılabiliyor. Misal tek bir işlev (function) ön plana çıkarmak isterseniz bunu dile getirebiliyorsunuz...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 04, 2019

Alıntı:

>

C++'da da var mı bilmiyorum, D'de yapılan her ön bildirim (forward declare) iki nokta üst üste ile ön seçimli haliyle yapılabiliyor. Misal tek bir işlev (function) ön plana çıkarmak isterseniz bunu dile getirebiliyorsunuz...

C++20'de mümkün olacak sanırım.
http://www.informit.com/articles/article.aspx?p=2923213&seqNum=3

Bir kaç sene önce google'cu abiler C++ konferansında söylüyorlardı işte CLang 'da bu mümkün diye ama ben kullanmadım daha.

Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]