-extern int asprintf (char **ptr, const char *fmt, /*args*/ ...);
-extern int vasprintf (char **ptr, const char *fmt, va_list ap);
-extern int asnprintf (char **ptr, size_t str_m, const char *fmt, /*args*/ ...);
-extern int vasnprintf(char **ptr, size_t str_m, const char *fmt, va_list ap);
-
-/*
- * That's needed to protect solaris's printf from ever seing NULL associated to a %s format
- * (without adding an extra check on working platforms :)
- */
-
-#ifdef PRINTF_NULL_WORKING
-# define PRINTF_STR(a) (a)
-#else
-# define PRINTF_STR(a) (a)?:"(null)"
+#if (defined(__GNUC__) && !defined(__cplusplus))
+XBT_PUBLIC(int) asprintf(char **ptr, const char *fmt, /*args */ ...);
+XBT_PUBLIC(int) vasprintf(char **ptr, const char *fmt, va_list ap);