2013-04-30 12 views
20

Stavo leggendo avio.h (parte di ffmpeg) e c'è la definizione di questo tipo (?) (?):definizione Funzione senza {}

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

Non capisco. Qualcuno potrebbe spiegarmi cosa fa? Grazie.

risposta

24

av_printf_format è una macro, che può facoltativamente aggiungere un attributo GCC alla dichiarazione di funzione. E 'definita 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 

Quindi questo è in realtà una dichiarazione di funzione, che può avere un attributo specifico, se compilato su GCC.

L'attributo format indica a GCC che la funzione utilizza gli argomenti come printf, che consente di diagnosticare alcuni errori.

+0

Grazie per la spiegazione! – vericule

Problemi correlati