ich habe gelesen avio.h (Teil von ffmpeg) und es gibt eine Definition (?) wie folgt:
int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3);
.
Ich verstehe es nicht. Kann mir jemand erklären was das bewirkt? Vielen Dank.
vericule
ich habe gelesen avio.h (Teil von ffmpeg) und es gibt eine Definition (?) wie folgt:
int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3);
.
Ich verstehe es nicht. Kann mir jemand erklären was das bewirkt? Vielen Dank.
av_printf_format
ist ein Makro, das der Funktionsdeklaration optional ein GCC-Attribut hinzufügen kann. Es ist definiert in Attribute.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
Dies ist also eigentlich eine Funktionsdeklaration, die ein bestimmtes Attribut haben kann, wenn sie auf GCC kompiliert wird.
Das format
-Attribut teilt GCC mit, dass die Funktion ihre Argumente wie nimmt printf
was bei der Diagnose einiger Fehler hilft.