#include <stdarg.h>
#include <avahi-common/cdecl.h>
+#include <avahi-common/gccmacro.h>
AVAHI_C_DECL_BEGIN
void *avahi_realloc(void *p, size_t size);
/** Allocate n new structures of the specified type. */
-#define avahi_new(type, n) (type*) avahi_malloc(n*sizeof(type))
+#define avahi_new(type, n) ((type*) avahi_malloc((n)*sizeof(type)))
/** Same as avahi_new() but set the memory to zero */
-#define avahi_new0(type, n) (type*) avahi_malloc0(n*sizeof(type))
+#define avahi_new0(type, n) ((type*) avahi_malloc0((n)*sizeof(type)))
/** Just like libc's strdup() */
char *avahi_strdup(const char *s);
* allocators. The structure is not copied! */
void avahi_set_allocator(const AvahiAllocator *a);
-#ifdef __GNUC__
-char *avahi_strdup_printf(const char *fmt, ... ) __attribute__ ((format(printf, 1, 2)));
-#else
/** Like sprintf() but store the result in a freshly allocated buffer. Free this with avahi_free() */
-char *avahi_strdup_printf(const char *fmt, ... );
-#endif
+char *avahi_strdup_printf(const char *fmt, ... ) AVAHI_GCC_PRINTF_ATTR12;
/** Same as avahi_strdup_printf() but take a va_list instead of varargs */
char *avahi_strdup_vprintf(const char *fmt, va_list ap);