-#ifdef __GNUC__
-#define PRINTF_FUNCTION(A,B) __attribute__((format(printf,A,B)))
+#if defined(__GNUC__) || defined(__clang__)
+# define PRINTF_FUNCTION(A,B) __attribute__((format(printf,A,B)))
+# define ARG_UNUSED __attribute__((__unused__))
+#else
+# define PRINTF_FUNCTION(A,B)
+# define ARG_UNUSED /**/
+#endif
+
+#ifdef WANT_DEEPER_PRINTF_CHECKS
+# define ALMOST_PRINTF(A, B) PRINTF_FUNCTION(A, B)