_t
Genellikle, opak bir tip tanımı sarar.
GCC _t
, gelecekteki Standart C ve POSIX sürümleriyle (GNU C kitaplık kılavuzu) çakışmalardan kaçınmak için kullanamayacağınız ayrılmış ad alanı ile biten adları ekler . Bazı araştırmalardan sonra, nihayet POSIX Standardı (1003.1, Gerekçe (Bilgilendirici)) içinde doğru referansı buldum:
B.2.12 Veri Türleri
Bu bölümde tanımlanan ek türlerin '' _t '' ile bitmesi şartı, ad alanı kirliliği sorunu tarafından istenmiştir. Bir başlık dosyasında bir tür tanımlamak (bu türün IEEE Std 1003.1-2001 tarafından tanımlanmadığı bir yer) tanımlamak ve programın ad alanına sembol eklemeden başka bir türde kullanmak zordur. Uygulayıcıların kendi türlerini sağlamasına izin vermek için, tüm uygun uygulamaların, '' _t '' ile biten ve uygulayıcının ek türler sağlamasına izin veren sembollerden kaçınması gerekir. Tiplerin büyük bir kullanımı, IEEE Std 1003.1-2001'de tanımlanan yapılara eklenebilen (ve çoğu durumda olması gereken) yapı elemanlarının tanımında olduğundan, ilave tiplere duyulan ihtiyaç zorlayıcıdır.
Özetle, Standart, Standart türler listesini genişletme şansının yüksek olduğunu söylüyor, bu nedenle Standart, _t
ad alanını kendi kullanımı için kısıtlıyor .
Örneğin, programınız POSIX 1003.1 Sorunları 6 ile eşleşiyor ve bir tür tanımladınız foo_t
. POSIX 1003.1 Sorunlar 7 sonunda yeni tanımlanmış bir türle yayımlanır foo_t
. Programınız yeni sürümle eşleşmiyor, bu sorun olabilir. _t
Kullanımın kısıtlanması, kodun yeniden düzenlenmesini önler. Bu nedenle, bir POSIX uyumluluğunu hedeflerseniz _t
, Standard'ın belirttiği gibi kesinlikle kaçınmalısınız .
Yan not: kişisel olarak, POSIX'e bağlı kalmaya çalışıyorum çünkü temiz programlama için iyi temeller verdiğini düşünüyorum. Ayrıca, Linux Kodlama Stili (bölüm 5) yönergelerine oldukça düşkünüm . Typedef kullanmamanın bazı iyi nedenleri vardır. Umarım bu yardım!
int_t
tanımlı? Her zaman olarak tanımlanırsaint
, yararlı değildir;int
doğrudan kullanmak çok daha net . Her zaman olarak tanımlanan değilseint
(olması gerektiği takdirde, demeklong int
yashort int
), o zaman kötü seçilmiş ve kafa karıştırıcı bir isim.