diff --git a/MagickCore/method-attribute.h b/MagickCore/method-attribute.h
index e8e30fc..6e4cb91 100644
--- a/MagickCore/method-attribute.h
+++ b/MagickCore/method-attribute.h
@@ -40,7 +40,7 @@
# pragma warning( disable: 4273 ) /* Disable the dll linkage warnings */
# endif
# if !defined(_MAGICKLIB_)
-# if defined(__GNUC__)
+# if defined(__clang__) || defined(__GNUC__)
# define MagickExport __attribute__ ((dllimport))
# else
# define MagickExport __declspec(dllimport)
@@ -49,7 +49,7 @@
# pragma message( "MagickCore lib DLL import interface" )
# endif
# else
-# if defined(__GNUC__)
+# if defined(__clang__) || defined(__GNUC__)
# define MagickExport __attribute__ ((dllexport))
# else
# define MagickExport __declspec(dllexport)
@@ -66,7 +66,7 @@
# endif
# if defined(_DLL) && !defined(_LIB)
-# if defined(__GNUC__)
+# if defined(__clang__) || defined(__GNUC__)
# define ModuleExport __attribute__ ((dllexport))
# else
# define ModuleExport __declspec(dllexport)
@@ -92,7 +92,7 @@
# pragma warning(disable : 4996)
# endif
#else
-# if __GNUC__ >= 4
+# if defined(__clang__) || (__GNUC__ >= 4)
# define MagickExport __attribute__ ((visibility ("default")))
# define MagickPrivate __attribute__ ((visibility ("hidden")))
# else
@@ -125,7 +125,7 @@
# define magick_unreferenced(x) /* nothing */
#endif
-#if (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+#if defined(__clang__) || (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
# define magick_alloc_size(x) __attribute__((__alloc_size__(x)))
# define magick_alloc_sizes(x,y) __attribute__((__alloc_size__(x,y)))
# define magick_cold_spot __attribute__((__cold__))
diff --git a/MagickCore/thread-private.h b/MagickCore/thread-private.h
index b681ad5..d778bb6 100644
--- a/MagickCore/thread-private.h
+++ b/MagickCore/thread-private.h
@@ -39,7 +39,7 @@
GetMagickResourceLimit(ThreadResource) : \
GetMagickResourceLimit(ThreadResource) < 2 ? 1 : 2)
-#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10))
+#if defined(__clang__) || (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10))
#define MagickCachePrefetch(address,mode,locality) \
__builtin_prefetch(address,mode,locality)
#else
diff --git a/MagickWand/method-attribute.h b/MagickWand/method-attribute.h
index a75eefb..f2bde9f 100644
--- a/MagickWand/method-attribute.h
+++ b/MagickWand/method-attribute.h
@@ -40,7 +40,7 @@
# pragma warning( disable: 4273 ) /* Disable the dll linkage warnings */
# endif
# if !defined(_MAGICKLIB_)
-# if defined(__GNUC__)
+# if defined(__clang__) || defined(__GNUC__)
# define WandExport __attribute__ ((dllimport))
# else
# define WandExport __declspec(dllimport)
@@ -49,7 +49,7 @@
# pragma message( "MagickCore lib DLL import interface" )
# endif
# else
-# if defined(__GNUC__)
+# if defined(__clang__) || defined(__GNUC__)
# define WandExport __attribute__ ((dllexport))
# else
# define WandExport __declspec(dllexport)
@@ -86,7 +86,7 @@
# pragma warning(disable : 4996)
# endif
#else
-# if __GNUC__ >= 4
+# if defined(__clang__) || (__GNUC__ >= 4)
# define WandExport __attribute__ ((visibility ("default")))
# define WandPrivate __attribute__ ((visibility ("hidden")))
# else
@@ -111,7 +111,7 @@
# define wand_unused(x) x
#endif
-#if (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+#if defined(__clang__) || (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
# define wand_alloc_size(x) __attribute__((__alloc_size__(x)))
# define wand_alloc_sizes(x,y) __attribute__((__alloc_size__(x,y)))
# define wand_cold_spot __attribute__((__cold__))