SORU
24 EKİM 2008, Cuma


Bir C kaynak da dahil olmak üzere başka bir dosya mı?

#include TAMAM (hatta tavsiye/iyi uygulama).c başka bir dosya .c dosya? Bir proje dosyası dahil olduklarında ne olur?

CEVAP
10 Temmuz 2009, Cuma


Doğru kullanıldığında, bu yararlı bir teknik olabilir.

Oldukça küçük bir ortak arayüz ve olmayan yeniden kullanılabilir uygulama kodu çok karmaşık, performans önemli bir alt sistemi olduğunu varsayalım. Kodu bir kaç bin satır, yüz kadar özel fonksiyonlar ve özel bayağı bir veri için çalışır. Eğer önemsiz olmayan gömülü sistemler ile çalışıyorsanız, muhtemelen bu durumla sık sık yeterince anlaşma.

Çözüm muhtemelen katmanlı, modüler ve ayrılmış olacak ve bu açıdan yararlı ve farklı dosyalarda alt parçaları farklı kodlama ile temsil takviye edilebilir.

C ile, bunu yaparak çok şey kaybedebilir. Neredeyse tüm toolchains tek bir derleme bir birim için iyi optimizasyonu sağlamak, ama hiçbir şey dışarıdan ilan hakkında çok kötümser.

Eğer bir C kaynak modüle her şey koyarsanız, sizin olsun

  • Performans ve kod geliştirmeleri - işlev çağrıları birçok durumda inlined olacak boyutu. Hatta satır içi uygulaması olmadan, derleyici daha verimli kod üretmek için fırsatlar vardır.

  • Bağlantı veri ve fonksiyon gizleme düzeyde.

  • Ad kirliliği ve bunun doğal bir sonucu olarak önlenmesi - daha az hantal adları kullanabilirsiniz.

  • Daha hızlı derleme ve Bağlantı.

Ama aynı zamanda bu dosyayı düzenlemek için geldiğinde korkunç bir karmaşa ve zımni modüler kaybedersiniz. Bu çok sayıda dosyayı kaynak bölme ve bu tek bir derleme bir birim üretmek için dahil ederek aşılabilir.

Bu doğru olsa yönetmek için bazı kuralları empoze etmek gerekir. Bu bir ölçüde, ama bazı genel ipuçları - araç zinciri bağlıdır

  • Ayrı bir başlık dosyası içinde ortak arabirim - yine de bunu yapmaman gerekiyordu.

  • Bir ana var .c tüm yan içeren dosya .c dosyaları. Bu da ortak arabirim için kod içerebilir.

  • Derleyici korumaları özel bir başlık ve kaynak modülleri dış derleme birimler dahil değil emin olmak için kullanın.

  • Tüm özel veri ve fonksiyonlar statik beyan edilmelidir.

  • Arasında kavramsal fark korumak .c ve .h dosyaları. Bu, mevcut kuralları güçlendirir. Aradaki fark, senin başlıklarını statik bildirimleri bir sürü olacaktır.

  • Eğer araç zinciri için bir neden empoze değilse bile, adı özel uygulama olarak dosyaları .c ve .h. Eğer varsa korumaları vardır kullanırsanız, bu kod üretmek ve yeni bir isim (bağlantı sırasında bazı boş kesimleri ile sona erebilir) tanıtacak. Büyük avantajı diğer araçlar (örneğin, IDE) bu dosyaları uygun şekilde tedavi edecek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Droid Life

    Droid Life

    17 Kasım 2009
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009