gcc 2.95.x does not like __attribute__ on typedefs

diff --git a/skeletons/asn_application.h b/skeletons/asn_application.h
index 3f2a450..f40cd86 100644
--- a/skeletons/asn_application.h
+++ b/skeletons/asn_application.h
@@ -36,8 +36,7 @@
 typedef void (asn_app_constraint_failed_f)(void *application_specific_key,
 	struct asn_TYPE_descriptor_s *type_descriptor_which_failed,
 	const void *structure_which_failed_ptr,
-	const char *error_message_format, ...)
-	__attribute__((format(printf, 4, 5)));
+	const char *error_message_format, ...) GCC_PRINTFLIKE(4, 5);
 
 #ifdef __cplusplus
 }
diff --git a/skeletons/asn_system.h b/skeletons/asn_system.h
index 568213f..d7ebdaa 100644
--- a/skeletons/asn_system.h
+++ b/skeletons/asn_system.h
@@ -78,8 +78,14 @@
 
 #endif	/* WIN32 */
 
-#ifndef	__GNUC__
-#define	__attribute__(ignore)
+#if	__GNUC__ >= 3
+#ifndef	GCC_PRINTFLIKE
+#define	GCC_PRINTFLIKE(fmt,var)	__attribute__((format(printf,fmt,var)))
+#endif
+#else
+#ifndef	GCC_PRINTFLIKE
+#define	GCC_PRINTFLIKE(fmt,var)	/* nothing */
+#endif
 #endif
 
 #ifndef	offsetof	/* If not defined by <stddef.h> */