1.Amaç

Bu belgenin amacı Tamamlanmamış Bildirimler-Incomplete (Forward) Declarations hakkında bilgi vermek ve nasıl kullanıldığını açıklamaktır. Buradaki örnekler üzerinden konu anlaşıldıktan sonra okuyucu kesinlikle kendi örneklerini yapıp konuyu pekiştirmelidir.. Aksi takdirde kısa sürede unutulur. Burada anlatılacak konu C dilinin gizli silahlarından biridir. O yüzden detaylı öğrenilmesi önerilir.

2.Tamamlanmamış Bildirimler Nedir

Tamamlanmamış Bildirimler-Incomplete (Forward) Declarations her ne kadar C dilinde göz önünde bulunmasa da aslında aslında her C kullanıcısının bilmesi gereken konudur. C dilinin bu özelliği ile çok daha esnek ve hızlı ve modüler kod yazabiliriz. Ayrıca kod tekrarını da engelleyecek şekilde kullanıcıya yardımda bulunur.

Tamamlanmamış Bildirimler(TB diyeceğim artık) struct, union ve diziler (C++ için Class)türlerinden biriyle yapılabilir. Aşağıda bu türler için en temel haliyle tamamlanmamış bildirim(TB ) örnekleri bulunmaktadır.

   struct student *ps;     union regZone *rZone;    class X;     int arr[];

Bu bildirimleri .c ya da .h dosyasında yapabilirsiniz. Derleyiciye, adlandırılmış sınıfın veya yapı tipinin var olduğunu söyler, ancak sınıfın veya yapıların üye işlevleri veya değişkenleri hakkında hiçbir şey söylemez. Bu ihmal, türün eksik bir beyanı olduğu anlamına gelir. Genellikle derleyiciye derlemede daha sonra tam bir beyanat verilecektir, bu yüzden eksik bir bildirime genellikle ileriye dönük bildirim de ((Forward Declarations) denir. TB, derleyiciye sınıfta veya yapı içinde ne olduğunu söylemediğinden, derleyici tam bir bildirime ulaşana kadar sınıfın veya yapının üyelerine başvuran veya derlemeyi bilmeyi gerektiren kodları derleyemez. Çünkü sınıf veya struct nesnesinin büyüklüğünü ve üye değişkenlerin türlerini bilmeyi gerekir.Yukarıdaki anlatımlar ile aşağıdaki kodun geçerliliğini anlamaya çalışalım. struct student; satırında derleyiciye struct student türünde bir türün olduğunu fakat şimdilik nasıl bir içerikte olduğu bildirilmeden bir bildirim yapılıyor. Derleyicinin bu durumu problem etmeyeceğini söylemiştik. Çünkü bu tür için bellekten herhangi bir yer alımı yapılmadı. Bu arada türün ismi student değil struct student dir. Typedef kullanılmadığına dikkat etmek gerekir.
typedef struct student Student; ile struct student tür ismini kısaca Student olarak değiştirebiliriz. Bu bilgiyi de ele alırsak bildirimi yapılmamış yapı türünden typedef de yapılabilir.

Yazının Devamı…

bycle in germany ile ilgili görsel sonucu