Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
6
Cevap
512
Tıklama
0
Öne Çıkarma
C++ Basit Bir Soru
N
4 ay
General

Faydalı olabilecek konuları tutuyorum, isterseniz anonime alabilirsiniz. @Kemâncı




Bu mesajda bahsedilenler: @Kemâncı
K
12 yıl
Yarbay
Konu Sahibi

Bu header dosyaları nasıl oluyor anlayamadım şimdi ben bi gui projesi oluşturdum(wxwidgets).iki tane cpp dosyası ve yanındada iki tane h dosyası oluşturdu,
projenin adına simpleGui koymuştum,
main ' ise , simpleGuiMain;
app , simpleGuiApp

gibi isimler verdi ide kendi kendine.Bende daha kolay anlayıp,sınıflarda karışıklık çıkmasın diye önündeki simpleGui ismi silerek sadece main ve app kaldı.(tabi header dosyalarının isimlerinide değiştirdim.)

Şimdi gelelim asıl sorularıma :
1)Derleyici yada işlemci önce header dosyalarınımı okuyor ? (Çünkü main.h'de virtual bool onInit() diye bir fonksiyonu çağırıyordu.)
2)Diyelim , ilk header dosyalarını okuyor ben bunların isimlerini değiştirdim ya bunu nasıl anladı?
3)Yoka Conf.ini gibi bir dosyasımı oluyor böyle çok sınıflı programlarda?(ilk main.h'yi çalıştır, o main.cpp ' yi ,main.cpp'de zaten app.cpp ' yi çağıracaktır,ya app.h'ye noldu?Böyle olursa app.cpp iki kez çağrılmış olacak. )

Şimdiden teşekkürler.



G
12 yıl
Yarbay

.h, .cpp çağırma diye birşey yok. Kaynak kod dosyalarının derlenebilmesi için tanımlayıcı ifadelere (nesne bildirimleri vs.) ihtiyaç var. Bunlar başlık dosyaları içerisine konur.

Mesela .cpp dosyasında Window w; diye birşey var fakat başlık dosyası yok. Derleyici bu durumda undefined... türünden bir hata verir çünkü w nesnesini oluşturabilmesi için sınıf bilgisi lazım ve w nesnesini kullanan her dosyanın window.h yi include etmesi gerekli.


Bu mesaja 1 cevap geldi.
K
12 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: elektro_gadget

.h, .cpp çağırma diye birşey yok. Kaynak kod dosyalarının derlenebilmesi için tanımlayıcı ifadelere (nesne bildirimleri vs.) ihtiyaç var. Bunlar başlık dosyaları içerisine konur.

Mesela .cpp dosyasında Window w; diye birşey var fakat başlık dosyası yok. Derleyici bu durumda undefined... türünden bir hata verir çünkü w nesnesini oluşturabilmesi için sınıf bilgisi lazım ve w nesnesini kullanan her dosyanın window.h yi include etmesi gerekli.

Hmm.. yani ilk hangisi çalışacak diye birşey yok, derleyici direk olarak kod dosyalarına bakıyor .

Şimdi anladım yani önce hangisi sonra hangisi çalışacak diye bir sıra yok diyebiliriz , bunu bizim yazmamıza bağlı olarak işlemci kendi sıraya koyarak çalıştıyor.


Bu mesaja 1 cevap geldi.
S
12 yıl
Çavuş

Derleyici sadece kod dosyalarını(.cpp) derler.

Önişlemci, başlık dosyalarını .cpp içine yerleştirir.

Önce önişlemci işini yapar sonra derleme başlar.


Bu mesaja 1 cevap geldi.
K
12 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: sawer

Derleyici sadece kod dosyalarını(.cpp) derler.

Önişlemci, başlık dosyalarını .cpp içine yerleştirir.

Önce önişlemci işini yapar sonra derleme başlar.

Sağolun hocam teşekkürler.

Cevap biraz geç oldu ama.



G
2 ay
Teğmen

  • Derleyici sıralı olarak önce header, sonra cpp diye bir dosya okuma sırası izlemez.
  • Dosya isimlerini değiştirince, include’ları da değiştirdiysen hiçbir sorun olmaz, çünkü derleyici include ile belirler.
  • Çalışma sırası, C++’da main() fonksiyonundan başlar; header dosyası veya ini dosyasıyla bir sıralama yapılandırması yoktur.
  • Header dosyaları programın başlama sırası ile ilgili değildir, sadece kodun derlenirken birden fazla dosyada tekrarını ve modülerliğini sağlar.




_____________________________

Eski kullanıcı adı: Codewake


DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.