Merge from 3.3.
diff --git a/Modules/_decimal/libmpdec/mpdecimal.h b/Modules/_decimal/libmpdec/mpdecimal.h
index 203275b..58bee02 100644
--- a/Modules/_decimal/libmpdec/mpdecimal.h
+++ b/Modules/_decimal/libmpdec/mpdecimal.h
@@ -32,6 +32,10 @@
 
 #ifdef __cplusplus
 extern "C" {
+  #ifndef __STDC_LIMIT_MACROS
+    #define __STDC_LIMIT_MACROS
+    #define MPD_CLEAR_STDC_LIMIT_MACROS
+  #endif
 #endif
 
 
@@ -55,18 +59,12 @@
   #define MPD_HIDE_SYMBOLS_END
   #define EXTINLINE extern inline
 #else
+  #ifdef HAVE_STDINT_H
+    #include <stdint.h>
+  #endif
   #ifdef HAVE_INTTYPES_H
     #include <inttypes.h>
   #endif
-  #ifdef HAVE_STDINT_H
-    #if defined(__cplusplus) && !defined(__STDC_LIMIT_MACROS)
-      #define __STDC_LIMIT_MACROS
-      #include <stdint.h>
-      #undef __STDC_LIMIT_MACROS
-    #else
-      #include <stdint.h>
-    #endif
-  #endif
   #ifndef __GNUC_STDC_INLINE__
     #define __GNUC_STDC_INLINE__ 1
   #endif
@@ -835,6 +833,10 @@
 
 
 #ifdef __cplusplus
+  #ifdef MPD_CLEAR_STDC_LIMIT_MACROS
+    #undef MPD_CLEAR_STDC_LIMIT_MACROS
+    #undef __STDC_LIMIT_MACROS
+  #endif
 } /* END extern "C" */
 #endif