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.
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.
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.
Dzięki za wyjaśnienie! – vericule