Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2002-12-10 15:40:39


"Rozental, Gennadiy" <gennadiy.rozental_at_[hidden]> writes:

>> "Gennadiy Rozental" <gennadiy.rozental_at_[hidden]> writes:
>>
>> >> metrowerks-C++-action
>> >
>> c:\build\libs\test\build\bin\libboost_unit_test_framework.lib\
> cwpro8.3\debug
>> > \runtime-link-dynamic\execution_monitor.obj
>> >> ### mwcc Compiler:
>> >> # File: ..\libs\test\src\execution_monitor.cpp
>> >> # -----------------------------------------------
>> >> # 157: case _CRT_ASSERT:
>> >> # Error: ^^^^^^^^^^^
>> >> # undefined identifier '_CRT_ASSERT'
>> >> ### mwcc Compiler:
>> >> # 161: case _CRT_ERROR:
>> >> # Error: ^^^^^^^^^^
>> >> # undefined identifier '_CRT_ERROR'
>> >
>> > This one appears to be caused by the fact that metrowerks
>> tools does not
>> > define the symbol _DEBUG in debug mode
>>
>> Why don't you fix that one, too?
>> _DEBUG is an MSVC-specific symbol.
>
> MSVC toolset defines it.

I see no evidence to support that claim.

The msvc compiler flags which turn on debug symbols, etc., also cause
_DEBUG to be defined. The toolset never touches "_DEBUG".

> While metrowerks don't. Do you want me to fix the latter?

I don't think I want you to "fix" it. As a user, you're not allowed
to #define _DEBUG, since that symbol is reserved to the
implementation.

> Where would be the best place to put debug specific definitions?

    #ifndef NDEBUG
       ...
    #endif

Might be a good choice. There are other possibilities, though. I'm
not really sure what you're trying to achieve, but it's a mistake to
assume that all Windows compilers will define that symbol in "debug
mode" (which is itself not a well-defined concept).

-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk