В MSDN'е по этому поводу совсем капли, а как работает тот или иной макрос я, честно говоря, совсем понять не могу.
Вот пример использования (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxconcrtassertions.asp):
| Код | #define _ASSERTE(expr) \ do { \ if (!(expr) && (1 == _CrtDbgReport( \ _CRT_ASSERT, __FILE__, __LINE__, #expr))) \ _CrtDbgBreak(); \ } while (0)
|
А вот как задефайнен этот макрос (см. crtdbg.h):
| Код | #define _CrtDbgBreak() ((void)0)
|
Для сравнения вот еще несколько:
| Код | #define _CrtSetBreakAlloc(a) ((long)0) #define _CrtCheckMemory() ((int)1) #define _CrtSetDbgFlag(f) ((int)0) #define _CrtDoForAllClientObjects(f, c) ((void)0)
|
и как оно работает? |