* Define a structure with extra padding to a fixed size
* This helps ensuring binary compatibility with future versions.
*/
-#define FF_PAD_STRUCTURE(size, ...) \
+
+#define FF_PAD_STRUCTURE(name, size, ...) \
+struct ff_pad_helper_##name { __VA_ARGS__ }; \
+typedef struct name { \
__VA_ARGS__ \
- char reserved_padding[size - sizeof(struct { __VA_ARGS__ })];
+ char reserved_padding[size - sizeof(struct ff_pad_helper_##name)]; \
+} name;
/**
* Buffer to print data progressively
* internal buffer is large enough to hold a reasonable paragraph of text,
* such as the current paragraph.
*/
-typedef struct AVBPrint {
- FF_PAD_STRUCTURE(1024,
+
+FF_PAD_STRUCTURE(AVBPrint, 1024,
char *str; /**< string so far */
unsigned len; /**< length so far */
unsigned size; /**< allocated memory */
unsigned size_max; /**< maximum allocated memory */
char reserved_internal_buffer[1];
- )
-} AVBPrint;
+)
/**
* Convenience macros for special values for av_bprint_init() size_max