2013-04-30 20 views
20

मैं इस तरह avio.h (ffmpeg का हिस्सा) पढ़ रहा था और परिभाषा नहीं है (?) (?):समारोह परिभाषा के बिना {}

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

मुझे यह नहीं मिला। क्या कोई मुझे समझा सकता है कि यह क्या करता है? धन्यवाद।

उत्तर

24

av_printf_format एक मैक्रो है, जो वैकल्पिक रूप से फ़ंक्शन घोषणा में एक जीसीसी विशेषता जोड़ सकता है। यह 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 

तो यह वास्तव में एक समारोह घोषणा है, जो एक विशिष्ट विशेषता हो सकता है अगर जीसीसी पर संकलित है।

format विशेषता जीसीसी को बताती है कि फ़ंक्शन printf जैसे तर्कों को लेता है, जो कुछ त्रुटियों का निदान करने में सहायता करता है।

+0

स्पष्टीकरण के लिए धन्यवाद! – vericule

संबंधित मुद्दे