From 34f5c1053ae1595aff7108fcf2bb78f10bcb0897 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 30 Jun 2012 16:33:14 +0000 Subject: [PATCH] Update debugging macros overview in the docs. Describe how the debugging macros really work since 2.9.1, i.e. explain wxDEBUG_LEVEL and NDEBUG instead of __WXDEBUG__. Closes #14435. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71887 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/doxygen/groups/funcmacro_debug.h | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/doxygen/groups/funcmacro_debug.h b/docs/doxygen/groups/funcmacro_debug.h index 281ba3d13e..b13ed8c4f3 100644 --- a/docs/doxygen/groups/funcmacro_debug.h +++ b/docs/doxygen/groups/funcmacro_debug.h @@ -12,13 +12,24 @@ @ingroup group_funcmacro Useful macros and functions for error checking and defensive programming. -wxWidgets defines three families of the assert-like macros: the wxASSERT() and -wxFAIL() macros only do anything if __WXDEBUG__ is defined (in other words, in -the debug build) but disappear completely in the release build. On the other -hand, the wxCHECK() macros stay in release builds but a check failure doesn't -generate any user-visible effects. Finally, the compile time assertions don't -happen during the run-time but result in the compilation error messages if the -condition they check fail. + +Starting with wxWidgets 2.9.1, debugging support in wxWidgets is always +compiled in by default, you need to explicitly define ::wxDEBUG_LEVEL as 0 to +disable it completely. However, by default debugging macros are dormant in the +release builds, i.e. when the main program is compiled with the standard @c +NDEBUG symbol being defined. You may explicitly activate the debugging checks +in the release build by calling wxSetAssertHandler() with a custom function if +needed. + +When debugging support is active, failure of both wxASSERT() and wxCHECK() +macros conditions result in a debug alert. When debugging support is inactive +or turned off entirely at compilation time, wxASSERT() and wxFAIL() macros +don't do anything while wxCHECK() still checks its condition and returns if it +fails, even if no alerts are shown to the user. + +Finally, the compile time assertions don't happen during the run-time but +result in the compilation error messages if the condition they check fail. +They are always enabled and are not affected by ::wxDEBUG_LEVEL. Related class group: @ref group_class_debugging.