Определение функции(?) без {}
Я читал авио.h (часть ffmpeg) и есть определение(?) вот так:
int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3);
.
Я не понимаю. Может кто-нибудь объяснить мне, что это значит? Спасибо.
1 ответ:
av_printf_format
это макрос, который может дополнительно добавить атрибут GCC к объявлению функции. Он определен в атрибутах.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
сообщает GCC, что функция принимает свои аргументы какprintf
, что помогает диагностировать некоторые ошибки.