cross-compile-safe options
diff --git a/skeletons/asn_system.h b/skeletons/asn_system.h
index 83266ef..0ec81b9 100644
--- a/skeletons/asn_system.h
+++ b/skeletons/asn_system.h
@@ -105,26 +105,13 @@
#endif /* _WIN32 */
#if __GNUC__ >= 3 || defined(__clang__)
-#ifndef GCC_PRINTFLIKE
-#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
-#endif
-#ifndef GCC_NOTUSED
-#define GCC_NOTUSED __attribute__((unused))
-#endif
+#define CC_ATTRIBUTE(attr) __attribute__((attr))
#else
-#ifndef GCC_PRINTFLIKE
-#define GCC_PRINTFLIKE(fmt,var) /* nothing */
+#define CC_ATTRIBUTE(attr)
#endif
-#ifndef GCC_NOTUSED
-#define GCC_NOTUSED
-#endif
-#endif
-
-#if defined(__clang__)
-#define CLANG_NO_SANITIZE(what) __attribute__((no_sanitize(what)))
-#else
-#define CLANG_NO_SANITIZE(what)
-#endif
+#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var))
+#define CC_NOTUSED CC_ATTRIBUTE(unused)
+#define CC_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what))
/* Figure out if thread safety is requested */
#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT))