Thread overview
[STLSOft 1.9.44] bug: STLSOFT_MESSAGE_ASSERT doesn't work (anymore) in in vc6, vc8
Jun 06, 2008
Martin Moene
Jun 07, 2008
Matthew Wilson
Re: [STLSOft 1.9.44] bug: STLSOFT_MESSAGE_ASSERT [ no bug; _DEBUG required 'course ]
Jun 07, 2008
Martin Moene
June 06, 2008
Hi Matthew,

I suspect something has broken the STLSOFT_[MESSAGE_]ASSERT() macro
with visual C++ 6 and 8 (possibly 7 also). See below.

Cheers, Martin.
___

* Test program:

#include <stlsoft/stlsoft.h>
#include <iostream>     // std::cout, std::endl

int main()
{
   std::cerr << "\tBefore STLSOFT_MESSAGE_ASSERT( \"test\", 0 )" << std::endl;

   STLSOFT_MESSAGE_ASSERT( "test", 0 );
   STLSOFT_ASSERT( 0 );

   std::cerr << "\tAfter STLSOFT_MESSAGE_ASSERT( \"test\", 0 )" << std::endl;

   return 0; // keep vc6 happy
}

* Results:

- GCC 3.4.2:
        Before STLSOFT_MESSAGE_ASSERT( "test", 0 )
Assertion failed: ("test" && 0), file bug_vc6-8-stlsoft_message_assert.cpp, line 8

- VC6, VC8:
        Before STLSOFT_MESSAGE_ASSERT( "test", 0 )
        After STLSOFT_MESSAGE_ASSERT( "test", 0 )

___
June 07, 2008
Martin

It works fine for me.

What cmd-line params are you specifying? I just did the following:

H:\STLSoft\Releases\1.9\STLSoft\test\scratch\stlsoft\message_assert\vc71>copy con ..\message_assert.cpp

#include <stlsoft/stlsoft.h>

int main()
{
        STLSOFT_MESSAGE_ASSERT("This message should not be shown", true);
        STLSOFT_MESSAGE_ASSERT("This message should be shown", false);
        return 0;
}
^Z
        1 file(s) copied.

H:\STLSoft\Releases\1.9\STLSoft\test\scratch\stlsoft\message_assert\vc71>cl -I%STLSOFT%/include -nologo ..\message_assert.cpp &&
message_assert.exe
message_assert.cpp

H:\STLSoft\Releases\1.9\STLSoft\test\scratch\stlsoft\message_assert\vc71>cl -I%STLSOFT%/include -MLd -D_DEBUG -nologo
..\message_assert.cpp && message_assert.exe
message_assert.cpp

  ** I got the assert dialog here **

H:\STLSoft\Releases\1.9\STLSoft\test\scratch\stlsoft\message_assert\vc71>



Doing the same works for vc6 as well. :-)





"Martin Moene" <moene@eld.physics.LeidenUniv.nl> wrote in message news:4848F4C6.2020604@eld.physics.LeidenUniv.nl...
> Hi Matthew,
>
> I suspect something has broken the STLSOFT_[MESSAGE_]ASSERT() macro
> with visual C++ 6 and 8 (possibly 7 also). See below.
>
> Cheers, Martin.
> ___
>
> * Test program:
>
> #include <stlsoft/stlsoft.h>
> #include <iostream>     // std::cout, std::endl
>
> int main()
> {
>     std::cerr << "\tBefore STLSOFT_MESSAGE_ASSERT( \"test\", 0 )" << std::endl;
>
>     STLSOFT_MESSAGE_ASSERT( "test", 0 );
>     STLSOFT_ASSERT( 0 );
>
>     std::cerr << "\tAfter STLSOFT_MESSAGE_ASSERT( \"test\", 0 )" << std::endl;
>
>     return 0; // keep vc6 happy
> }
>
> * Results:
>
> - GCC 3.4.2:
>          Before STLSOFT_MESSAGE_ASSERT( "test", 0 )
> Assertion failed: ("test" && 0), file bug_vc6-8-stlsoft_message_assert.cpp, line 8
>
> - VC6, VC8:
>          Before STLSOFT_MESSAGE_ASSERT( "test", 0 )
>          After STLSOFT_MESSAGE_ASSERT( "test", 0 )
>
> ___


June 07, 2008
Matthew Wilson wrote:
> It works fine for me.
> 
> What cmd-line params are you specifying? I just did the following:
> 
> <snip>
> 
> prompt>cl -I%STLSOFT%/include -nologo ..\message_assert.cpp && message_assert.exe
> message_assert.cpp
> 
> prompt>cl -I%STLSOFT%/include -MLd -D_DEBUG -nologo ..\message_assert.cpp && message_assert.exe
> message_assert.cpp
> 
>   ** I got the assert dialog here **
> 

Matthew,

Ok, blush, blush, forgot all about -MLd -D_DEBUG.

I used:

    prompt>cl -I%STLSOFT%/include -nologo message_assert.cpp

and

    prompt>g++  -Wall -I"%STLSOFT%/include" -o message_assert.exe message_assert.cpp

I wasn't 'alarmed', because g++'s program gives:

   Assertion failed: ("This message should be shown" && false), file ..\message_assert.cpp, line 7

While NO -D_DEBUG has been specified.   Is this to be expected?

Thanks!

Martin.