Funktionsdefinition(?) ohne {}

Lesezeit: 1 Minute

Benutzer-Avatar
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 printfwas bei der Diagnose einiger Fehler hilft.

1236420cookie-checkFunktionsdefinition(?) ohne {}

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy