2012-03-20 27 views
6

bağımsız değişkenle bu C++ parametre beyanı anlamak ve kaynak tarama oldu Lütfen yardım here bulundu.Bu işlev bildiriminde rastladım zaman bana günlük KÖK C++ kütüphaneleri (root.cern.ch) kullanan

const char *'un kendi adına nasıl bir argüman veya parantez içerdiğini anlamıyorum. va_(fmt) ifadesi daha sonra bir işlev çağrısı veya yapıcı gibi görünse bile basit bir const char * olarak kullanılır. İlk başta benim için de yeni olan değişken argüman listesi ile ilgili bir şeyler olduğunu düşündüm, ancak stdarg.h üzerindeki okuma belgeleri bu soruya hiç yardımcı olmadı.

Bu konuda ne yapacağından emin olmadığımdan, yardım için Google'a gitmek çok zor. Argümanlı bir beyan? Bu iyi bir sonuç vermez.

Eskiden C++'yı bildiğimi düşünürdüm, ama burada neler oluyor? Tüm yardımlar takdir edilecektir.

+1

Benim tahminim va_' basit bir makro olduğunu 'olmasıdır. Muhtemelen, ancak parametresine genişleten bir şey yapmaz. –

cevap

11

Bu bir makro var - Varargs.h yılında:

#if ... 
# define va_(arg) __builtin_va_alist 
#else 
# define va_(arg) arg 
#endif 
+7

C programcılarına '# define '' in sadece şaşırdığını söylüyoruz, ama bize inanıyorlar mı? * Hayır ... *^_- –

+0

Teşekkürler. Bu dosyayı bile okudum. Onu kaçırmış olmalıyım. – Simon

+0

Makroların neden kötü olmasının başka bir örneği. Eğer fmt türüyse, sözdizimi bir fonksiyonun geçerli bir beyanı olacaktır, 'va_' adlı argüman olarak' char const * 'işlevini döndüren bir işlev için bir işaretçi. – bames53