]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/except.h
reflect correct position for native toolbar, fixes #14049
[wxWidgets.git] / include / wx / except.h
index ef861f02b914dc738830c6328dc7964577afa560..116a82efbc444bedbab2eaf73fe07889e0cd2d65 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     17.09.2003
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_EXCEPT_H_
 // macros working whether wxUSE_EXCEPTIONS is 0 or 1
 // ----------------------------------------------------------------------------
 
-#if wxUSE_EXCEPTIONS
-    #define wxTRY try
-    #define wxCATCH_ALL(code) catch ( ... ) { code }
-#else // !wxUSE_EXCEPTIONS
+// even if the library itself was compiled with exceptions support, the user
+// code using it might be compiling with a compiler switch disabling them in
+// which cases we shouldn't use try/catch in the headers -- this results in
+// compilation errors in e.g. wx/scopeguard.h with at least g++ 4
+#if !wxUSE_EXCEPTIONS || \
+        (defined(__GNUG__) && !defined(__EXCEPTIONS))
+    #ifndef wxNO_EXCEPTIONS
+        #define wxNO_EXCEPTIONS
+    #endif
+#endif
+
+#ifdef wxNO_EXCEPTIONS
     #define wxTRY
     #define wxCATCH_ALL(code)
-#endif // wxUSE_EXCEPTIONS/!wxUSE_EXCEPTIONS
+#else // do use exceptions
+    #define wxTRY try
+    #define wxCATCH_ALL(code) catch ( ... ) { code }
+#endif // wxNO_EXCEPTIONS/!wxNO_EXCEPTIONS
 
 #endif // _WX_EXCEPT_H_