2013-04-30 17 views
20

czytałem avio.h (część ffmpeg) i tam jest definicja takiego (?) (?):Definicja funkcji bez {}

int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3);.

Nie rozumiem. Czy ktoś mógłby mi wyjaśnić, co to oznacza? Dzięki.

Odpowiedz

24

av_printf_format to makro, które może opcjonalnie dodać atrybut GCC do deklaracji funkcji. Jest zdefiniowana in attributes.h:

#ifdef __GNUC__ 
# define av_builtin_constant_p __builtin_constant_p 
# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) 
#else 
# define av_builtin_constant_p(x) 0 
# define av_printf_format(fmtpos, attrpos) 
#endif 

Więc to jest rzeczywiście deklaracja funkcji, które mogą mieć konkretny atrybut jeśli kompilowany na GCC.

Atrybut format mówi GCC, że funkcja przyjmuje takie argumenty jak printf, która pomaga zdiagnozować niektóre błędy.

+0

Dzięki za wyjaśnienie! – vericule

Powiązane problemy