SORU
6 Kasım 2009, Cuma


Neden cpp dosyaları dahil etme ve bunun yerine bir başlık?

İlk C programlama görevimi bitirdim ve benim not aldı. Ama sıralamaya göre, including cpp files instead of compiling and linking them işaretleri kaybettim. Bunun ne anlama geldiği konusunda çok net değilim.

Bir bak Şifremi geri alma, derslerim için başlık dosyaları oluşturmak için tercih etti, ama cpp dosyalarında her şeyi (güzel başlık dosyaları olmadan iş gibi görünüyordu...) yaptı. Hocayla yazdım anlamına geldiğini tahmin ediyorum '#include "";' benim bazı dosyalar. mycppfile.cpp

#includeBenim için mantık'oldu cpp dosyaları: ıng - Üstbilgi dosyasına gitmek için gereken her şeyi bir başlık dosyası gibi yaptım yani cpp dosyam vardı, - Maymun moda, diğer başlık dosyaları #include'd dosya, cpp dosyam için aynı şeyi yaptım. şunu gördüm ki,

Tam olarak ben yanlış ne yaptım ve neden kötü?

CEVAP
6 Kasım 2009, Cuma


Bildiğim kadarıyla, C standart başlık dosyaları ve kaynak dosyaları arasında fark gözetmez. Dil ile ilgili olarak, yasal kod ile herhangi bir metin dosyası başka bir aynıdır. Yasadışı olmasa da, ancak programın kaynak dosyaları da dahil olmak üzere oldukça fazla kaynak ilk etapta dosyaları ayıran yapman herhangi bir avantajı ortadan kaldıracaktır.

#include yapar aslında, söylekadar basitbelirttiğiniz dosyanın tamamını alıp kopyalayın önce aktif dosyanızaderleyicionun elleri alır. Kaynak projenizi birlikte tüm dosyalar dahil, temelde ne yaptığını ve sadece tek bir büyük kaynak herhangi bir ayrım olmadan dosya yapmak arasında fark var.

"Oh, bu önemli değil. Eğer çalışıyorsa, sorun yok"Seni ağlarken duydum. Ve bir anlamda, haklısınız. Ama şimdi küçücük minicik bir program, sizin için derlemek için güzel ve nispeten serbest bir CPU ile uğraşıyoruz. Her zaman bu kadar şanslı olmayacaksın.

Eğer ciddi bir bilgisayar programlama alemlerine dalmak, milyonlarca, yerine onlarca ulaşabilen satır sayısı ile projeler göreceksiniz. Pek çok çizgi. Ve eğer modern bir masaüstü bilgisayarda bu derlemeye çalışırsanız, bir saniye yerine bir kaç saat sürebilir.

"Oh hayır! Kulağa korkunç geliyor! Ancak bu korkunç kaderi önlemek miyim?!"Ne yazık ki, bu konuda yapabileceğimiz fazla bir şey yok. Eğer derleme saat sürer, derleme saat sürer. Ama bu derlenmiş bir kere gerçekten ilk kez tek önemli olan, yeniden derlemek için bir sebebi varmış.

Bir şey değiştirmediğiniz sürece.

Şimdi sen iki milyon satır kod birleştirilmiş içine kocaman bir dev, ve yapmanız gereken basit bir hata düzeltmek gibi, diyelim ki, x = y 1 demek zorunda derlemek için iki milyon satır tekrar sipariş için test bu. Ve eğer x = y - 1 yerine yapmak demek olduğunu öğrenirseniz, o zaman yeniden derlemek iki milyon satır sizi bekliyor. Bu iyi harcanan başka bir şey yapıyor olabilir o zaman boşa saatlerce.

"Ama verimsiz olmaktan nefret ediyorum! Bazı yollar vardıderlemebenim kod parçaları ayrı ayrı, bir şekildelinkonlarla birlikte daha sonra!"Mükemmel bir fikir, teoride. Ama eğer program farklı bir dosya içinde neler olduğunu bilmem gerekiyor? Minik minik bir sürü çalıştırmak istediğiniz sürece imkansız tamamen sizin kod temeli ayrı .exe dosyaları yerine.

"Ama kesinlikle mümkün olmalı! Programlama saf aksi takdirde işkence gibi geliyor! Eğer ayrı bir yol buldumarayüzü uygulaması? Programın geri kalanı için onları tanımlamak, ve bir çeşit koyarak bu kodu farklı kesimlerinden yeterli bilgi alarak söylüyorlarbaşlıkbunun yerine dosya? Ve bu şekilde, #include kullanabilirimön işlemci Direktifisadece bilgi derlemek için gerekli getirmek için!"

Hmm. Orada bir şeyler olabilir. Bana nasıl gittiğini haber ver.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DRDAnimation

    DRDAnimation

    28 EYLÜL 2012
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006
  • The Onion

    The Onion

    14 Mart 2006