Benim (sınırlı - Ben normalde bir C geliştiricisi değilim) anlayışına göre, bu C'ye dayanır. Ayrıca, işlevleri kullanmadan önce bildirilmelidir.
Örneğin, aşağıdakiler bir derleyici hatası vermelidir:
void SomeFunction() {
SomeOtherFunction();
}
void SomeOtherFunction() {
printf("What?");
}
Hata, bildirimden önce çağırdığınız için "SomeOtherFunction bildirilmedi" olmalıdır. Bunu düzeltmenin bir yolu, SomeOtherFunction işlevini SomeFunction öğesinin üzerine getirmektir. Diğer bir yaklaşım önce işlev imzasını beyan etmektir:
void SomeOtherFunction();
void SomeFunction() {
SomeOtherFunction();
}
void SomeOtherFunction() {
printf("What?");
}
Bu derleyicinin bilmesini sağlar: Kodda bir yere bakın, voO döndüren ve herhangi bir parametre almayan SomeOtherFunction adlı bir işlev vardır. Bu nedenle, SomeOtherFunction işlevini çağırmaya çalışan kodlayıcı kodunu kullanıyorsanız, panik yapmayın ve bunun yerine onu arayın.
Şimdi, iki farklı .c dosyasında SomeFunction ve SomeOtherFunction olduğunu düşünün. Daha sonra #.c'ye "SomeOther.c" ifadesini dahil etmeniz gerekir. Şimdi SomeOther.c'ye "özel" fonksiyonlar ekleyin. C özel fonksiyonları bilmediğinden, bu fonksiyon Some.c'de de kullanılabilir.
Burada .h Dosyaları devreye girer: Diğer .c dosyalarında erişilebilen bir .c dosyasından 'Vermek' istediğiniz tüm işlevleri (ve değişkenleri) belirtirler. Bu şekilde, Genel / Özel kapsam gibi bir şey kazanırsınız. Ayrıca, bu .h dosyasını kaynak kodunuzu paylaşmak zorunda kalmadan başkalarına verebilirsiniz - .h dosyaları da derlenmiş .lib dosyalarına karşı çalışır.
Bu yüzden asıl neden gerçekten kolaylık sağlamak, kaynak kodu koruması ve uygulamanızın parçaları arasında biraz ayrışmaktır.
Yine de C idi. C ++, Sınıfları ve özel / genel değiştiricileri tanıttı, bu yüzden hala gerekli olup olmadıklarını sorabilirken, C ++ AFAIK hala kullanmadan önce işlevlerin bildirilmesini gerektirir. Ayrıca, birçok C ++ Geliştiricisi de C geliştiricisidir veya C geliştiricisidir ve kavramlarını ve alışkanlıklarını C ++ 'a devraldı - neden kırılmamış olanı değiştirelim?