Bir Şablon Dizgesinin Çözümlenmesi
Önceki Biçimli Çıktı Sonraki
Bir Şablon Dizgesinin Çözümlenmesi
parse_printf_format işlevini kullanarak bir şablon dizgesindeki dönüşüm belireteçlerinin karşılığı olan argümanların sayısı ve türü hakkında bilgi alabilirsiniz. Bu işlevi kullanarak kullanıcının uygulamadan geçersiz argümanlar girerek bir çökmeye sebep olmasından kaçınmak için printf'e bir arayüz oluşturabilirsiniz.
Bu bölümde açıklanan tüm işlevler printf.h başlık dosyasında bildirilmiştir.
size_t parse_printf_format
(const char *şablon,
 size_t      n,
 int        *argtürleri)
işlev
Bu işlev şablon biçim dizgesi tarafından kullanılacak argümanların sayısı ve türleri hakkında bilgi ile döner. Bu bilgi her elemanı bir argüman için olmak üzere argtürleri dizisine kaydedilir. Bu bilgi aşağıda listelenen çeşitli PA_ makroları kullanılarak kodlanır.
n argümanı ile argtürleri dizisindeki eleman sayısı belirtilir. Bu sayı, parse_printf_format işlevinin yazmayı deneyeceği en çok eleman sayısıdır.
parse_printf_format işlevi şablon dizgesinin gerektirdiği argüman sayısı ile döner. Bu sayı n ile belirtilenden büyükse dönen bilgi sadece ilk n argüman içindir. Tüm argümanlar için bilgi almak isterseniz, daha büyük bir dizi ayırıp işlevi tekrar çağırmayı denemelisiniz.
Argüman türleri temel türlerin ve tür değiştirici parametrelerinin bir birleşimi olarak kodlanır.
int PA_FLAG_MASK
makro
Bu makro tür değiştirici seçenek bitleri için bir bit maskesidir. Bir argümanın seçenek bitlerini çıkarmak için (argturleri[i] PA_FLAG_MASK) ifadesini, temel tür kodunu çıkarmak için (argturleri[i] ~PA_FLAG_MASK) ifadesini yazabilirsiniz.
Tamsayı değerler olarak temel türleri ifade eden sembolik sabitler:
PA_INT
int temel türünü belirtir.
PA_CHAR
char türüne dönüşen int temel türünü belirtir.
PA_STRING
Bir boş karakter sonlandırmalı dizge gösteren char * temel türünü belirtir.
PA_POINTER
Herhangi bir gösterici olarak void * temel türünü belirtir.
PA_FLOAT
float temel türünü belirtir.
PA_DOUBLE
double temel türünü belirtir.
PA_LAST
Kendi yazılımınız için PA_LAST'ın artan değerleri olarak ek temel türler tanımlayabilirsiniz. Örneğin, foo ve bar veri türlerinin kodlamasını kendi özelleştirilmiş printf dönüşümleri ile şöyle tanımlamalısınız:
#define PA_FOO  PA_LAST
#define PA_BAR  (PA_LAST + 1)
Aşağıdaki bir temel türü değiştiren seçenek bitleri listelenmiştir. Bunları temel türlerle VEYA'lanarak birleştirilebilir.
PA_FLAG_PTR
Bu bit 1 ise kodlanan türün bir değere değil temel türe bir gösterici olduğunu belirtir. Örneğin, PA_INT|PA_FLAG_PTR ifadesi int * türü içindir.
PA_FLAG_SHORT
Bu bit 1 ise temel türün short ile değiştirildiğini belirtir. (Bu h tür değiştiricisine karşılıktır.)
PA_FLAG_LONG
Bu bit 1 ise temel türün long ile değiştirildiğini belirtir. (Bu l tür değiştiricisine karşılıktır.)
PA_FLAG_LONG_LONG
Bu bit 1 ise temel türün long long ile değiştirildiğini belirtir. (Bu L tür değiştiricisine karşılıktır.)
PA_FLAG_LONG_DOUBLE
Bu PA_FLAG_LONG_LONG ile eşanlamlıdır ve teamülen long double türü belirten PA_DOUBLE temel türü ile kullanılır.
Önceki Üst Ana Başlık Sonraki
Değişkin Çıktı İşlevleri Başlangıç Bir Şablon Dizgesinin Çözümlenmesi Örneği
Bir Linux Kitaplığı Sayfası