- // call this function to break into the debugger unconditionally (assuming
- // the program is running under debugger, of course)
- extern void WXDLLIMPEXP_BASE wxTrap();
-
- // assert checks if the condition is true and calls the assert handler with
- // the provided message if it isn't
+ // wxTrap() can be used to break into the debugger unconditionally
+ // (assuming the program is running under debugger, of course).
+ //
+ // If possible, we prefer to define it as a macro rather than as a function
+ // to open the debugger at the position where we trapped and not inside the
+ // trap function itself which is not very useful.
+ #ifdef __VISUALC__
+ #define wxTrap() __debugbreak()
+ #else
+ extern WXDLLIMPEXP_BASE void wxTrap();
+ #endif // Win VisualC
+
+ // Global flag used to indicate that assert macros should call wxTrap(): it
+ // is set by the default assert handler if the user answers yes to the
+ // question of whether to trap.
+ extern WXDLLIMPEXP_DATA_BASE(bool) wxTrapInAssert;
+
+ // This macro checks if the condition is true and calls the assert handler
+ // with the provided message if it isn't and finally traps if the special
+ // flag indicating that it should do it was set by the handler.