2013-04-30 21 views
20

なしIはavio.h(ffmpegの一部)を読み取るし、定義があり、このような(?)(?):関数定義{}

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

私はそれを取得しません。誰かが私にこれが何を説明することができますか?ありがとう。

答えて

24

av_printf_formatはマクロで、オプションでGCC属性を関数宣言に追加できます。それは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 

だから、これは実際にはGCCでコンパイルした場合、特定の属性を有することができる関数宣言、です。

format属性は、関数がそのエラーを診断するのに役立つprintfのような引数をとることをGCCに伝えます。

+0

ありがとうございます! – vericule