Use same workaround for all gcc versions.
diff --git a/asio/include/asio/detail/pop_options.hpp b/asio/include/asio/detail/pop_options.hpp
index 8b4e16f..499496b 100644
--- a/asio/include/asio/detail/pop_options.hpp
+++ b/asio/include/asio/detail/pop_options.hpp
@@ -32,10 +32,7 @@
 # endif
 
 # if defined(__OBJC__) && !defined(__APPLE_CC__)
-#  if (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 4)
-#   pragma pop_macro("Protocol")
-#   pragma pop_macro("id")
-#  elif defined(ASIO_OBJC_WORKAROUND)
+#  if defined(ASIO_OBJC_WORKAROUND)
 #   undef Protocol
 #   undef id
 #   undef ASIO_OBJC_WORKAROUND
diff --git a/asio/include/asio/detail/push_options.hpp b/asio/include/asio/detail/push_options.hpp
index 9b52215..6dcd04c 100644
--- a/asio/include/asio/detail/push_options.hpp
+++ b/asio/include/asio/detail/push_options.hpp
@@ -32,15 +32,12 @@
 # endif
 
 # if defined(__OBJC__) && !defined(__APPLE_CC__)
-#  if (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 4)
-#   pragma push_macro("Protocol")
-#   define Protocol cpp_Protocol
-#   pragma push_macro("id")
-#   define id cpp_id
-#  elif !defined(Protocol) && !defined(id)
-#   define Protocol cpp_Protocol
-#   define id cpp_id
-#   define ASIO_OBJC_WORKAROUND
+#  if !defined(ASIO_DISABLE_OBJC_WORKAROUND)
+#   if !defined(Protocol) && !defined(id)
+#    define Protocol cpp_Protocol
+#    define id cpp_id
+#    define ASIO_OBJC_WORKAROUND
+#   endif
 #  endif
 # endif