Thread overview
bool conflicts with windows.h??!!!
Sep 09, 2001
Laurentiu Pancescu
Sep 09, 2001
Walter
Sep 10, 2001
Jan Knepper
Sep 10, 2001
Laurentiu Pancescu
Sep 10, 2001
Jan Knepper
Sep 10, 2001
Laurentiu Pancescu
Sep 10, 2001
Jan Knepper
September 09, 2001
I have a problem with the following code (booltest.cpp, try
compiling it!):

#include <windows.h>

void test(bool param)
{
  if (param)
    MessageBox(NULL, "Tested", "Bool test", MB_OK);
}

If I use "sc -c booltest.cpp", the compiler expects to find ')' instead of "param", probably because it doesn't know about bool.  If I add "-Ab" to the parameter list, the compiling stops inside <windows.h>, because somewhere in oaidl.h or objidl.h, Microsoft's headers use the declaration:

_VARIANT_BOOL bool; // this gives errors, bool is reserved name with -Ab

I'm using version 8.1d.  Probably the Microsoft headers that DM comes with are pretty old (bool is reserved word in MSVC now, so MS headers must have changed).

The only solution I found was "sc -c -Ab -HIstdbool.h" (yep, that's an ugly one!).  In addition, after all includes, before using bool in his own source, one must add:

#ifdef __DMC__
#ifdef bool
#undef bool
#endif
#endif

I got into this problem while trying to port V GUI Toolkit (http://www.objectcentral.com) to DigitalMars, and it contains a rather large number of files, too large to modify everything like this!  Perhaps Walter could find a solution on the DigitalMars compiler's side?


Regards,
  Laurentiu

September 09, 2001
An easy way is just comment out the line in Microsoft's .h file.

Laurentiu Pancescu wrote in message <9nfg21$15df$1@digitaldaemon.com>...
>I have a problem with the following code (booltest.cpp, try
>compiling it!):
>
>#include <windows.h>
>
>void test(bool param)
>{
>  if (param)
>    MessageBox(NULL, "Tested", "Bool test", MB_OK);
>}
>
>If I use "sc -c booltest.cpp", the compiler expects to find ')' instead of "param", probably because it doesn't know about bool.  If I add "-Ab" to the parameter list, the compiling stops inside <windows.h>, because somewhere in oaidl.h or objidl.h, Microsoft's headers use the declaration:
>
>_VARIANT_BOOL bool;
>// this gives errors, bool is reserved name with -Ab
>
>I'm using version 8.1d.  Probably the Microsoft headers that DM comes with are pretty old (bool is reserved word in MSVC now, so MS headers must have changed).
>
>The only solution I found was "sc -c -Ab -HIstdbool.h" (yep, that's an ugly one!).  In addition, after all includes, before using bool in his own source, one must add:
>
>#ifdef __DMC__
>#ifdef bool
>#undef bool
>#endif
>#endif
>
>I got into this problem while trying to port V GUI Toolkit (http://www.objectcentral.com) to DigitalMars, and it contains a rather large number of files, too large to modify everything like this!  Perhaps Walter could find a solution on the DigitalMars compiler's side?
>
>
>Regards,
>  Laurentiu
>


September 10, 2001
I fixed that problem with the M$ header files as:

#if defined(__SC__) || defined(__DMC__)
                _VARIANT_BOOL _bool;
#else
                _VARIANT_BOOL bool;
#endif

I also used to have a 'clause' in the __SC__/__DMC__ block with #if defined(_BOOL_DEFINED) but I removed it.

I guess we will have to patch that in the next release of the compiler.

Jan



Laurentiu Pancescu wrote:

> I have a problem with the following code (booltest.cpp, try
> compiling it!):
>
> #include <windows.h>
>
> void test(bool param)
> {
>   if (param)
>     MessageBox(NULL, "Tested", "Bool test", MB_OK);
> }
>
> If I use "sc -c booltest.cpp", the compiler expects to find ')' instead of "param", probably because it doesn't know about bool.  If I add "-Ab" to the parameter list, the compiling stops inside <windows.h>, because somewhere in oaidl.h or objidl.h, Microsoft's headers use the declaration:
>
> _VARIANT_BOOL bool;
> // this gives errors, bool is reserved name with -Ab
>
> I'm using version 8.1d.  Probably the Microsoft headers that DM comes with are pretty old (bool is reserved word in MSVC now, so MS headers must have changed).
>
> The only solution I found was "sc -c -Ab -HIstdbool.h" (yep, that's an ugly one!).  In addition, after all includes, before using bool in his own source, one must add:
>
> #ifdef __DMC__
> #ifdef bool
> #undef bool
> #endif
> #endif
>
> I got into this problem while trying to port V GUI Toolkit (http://www.objectcentral.com) to DigitalMars, and it contains a rather large number of files, too large to modify everything like this!  Perhaps Walter could find a solution on the DigitalMars compiler's side?
>
> Regards,
>   Laurentiu

September 10, 2001
Cool!  It's really great to see such prompt support from DigitalMars!!

I also did something similar in the 2 header files that used it (oaidl.h and objidl.h, as I remember), and managed to compile the V GUI toolkit successfully, at least the core, not yet the demo applications.

WRT next patch, I saw a lot of messages about people not being
able to compile using DM's IMPLIB import libraries, especially
in the case of system libs.  I also had this problem while I
used the freely downloadable compiler, that only has a small set
of libraries.  (This was before I bought the CD).  However, I
was able to produce *all* the correct import libraries by
myself, including those that were packed with the free compiler.  I
wrote a PERL script that parses and modifies the old MinGW DEF
files, and generates new DEF files, that can be used as direct
input for DM's IMPLIB.  The result is a bunch of import libs
that really work!  :)

Maybe it would be useful to offer the PERL script on DM's FTP
or HTTP (contrib section, perhaps)?  The MinGW DEF files are
still available somewhere on Janjaap FTP, and Perl is widely
spread (I'm using it, so it must be widespread... ;).  Or even the
binary libs?  I think it would be more convenient than mailing
some particular libs to each developer.


Regards,
  Laurentiu

Jan Knepper <jan@smartsoft.cc> wrote:

>I fixed that problem with the M$ header files as:
>
>#if defined(__SC__) || defined(__DMC__)
>                _VARIANT_BOOL _bool;
>#else
>                _VARIANT_BOOL bool;
>#endif
>
>I also used to have a 'clause' in the __SC__/__DMC__ block with #if defined(_BOOL_DEFINED) but I removed it.
>
>I guess we will have to patch that in the next release of the compiler.
>
>Jan
>
>
>
>Laurentiu Pancescu wrote:
>
>> I have a problem with the following code (booltest.cpp, try
>> compiling it!):
>>
>> #include <windows.h>
>>
>> void test(bool param)
>> {
>>   if (param)
>>     MessageBox(NULL, "Tested", "Bool test", MB_OK);
>> }
>>
>> If I use "sc -c booltest.cpp", the compiler expects to find ')' instead of "param", probably because it doesn't know about bool.  If I add "-Ab" to the parameter list, the compiling stops inside <windows.h>, because somewhere in oaidl.h or objidl.h, Microsoft's headers use the declaration:
>>
>> _VARIANT_BOOL bool;
>> // this gives errors, bool is reserved name with -Ab
>>
>> I'm using version 8.1d.  Probably the Microsoft headers that DM comes with are pretty old (bool is reserved word in MSVC now, so MS headers must have changed).
>>
>> The only solution I found was "sc -c -Ab -HIstdbool.h" (yep, that's an ugly one!).  In addition, after all includes, before using bool in his own source, one must add:
>>
>> #ifdef __DMC__
>> #ifdef bool
>> #undef bool
>> #endif
>> #endif
>>
>> I got into this problem while trying to port V GUI Toolkit (http://www.objectcentral.com) to DigitalMars, and it contains a rather large number of files, too large to modify everything like this!  Perhaps Walter could find a solution on the DigitalMars compiler's side?
>>
>> Regards,
>>   Laurentiu
>

September 10, 2001
Laurentiu Pancescu wrote:

> Cool!  It's really great to see such prompt support from DigitalMars!!

We try to be prompt and direct...
I guess this time a birthday came in the way... <g>

> WRT next patch, I saw a lot of messages about people not being
> able to compile using DM's IMPLIB import libraries, especially
> in the case of system libs.  I also had this problem while I
> used the freely downloadable compiler, that only has a small set
> of libraries.  (This was before I bought the CD).  However, I
> was able to produce *all* the correct import libraries by
> myself, including those that were packed with the free compiler.  I
> wrote a PERL script that parses and modifies the old MinGW DEF
> files, and generates new DEF files, that can be used as direct
> input for DM's IMPLIB.  The result is a bunch of import libs
> that really work!  :)
>
> Maybe it would be useful to offer the PERL script on DM's FTP
> or HTTP (contrib section, perhaps)?  The MinGW DEF files are
> still available somewhere on Janjaap FTP, and Perl is widely
> spread (I'm using it, so it must be widespread... ;).  Or even the
> binary libs?  I think it would be more convenient than mailing
> some particular libs to each developer.

I think at sometime we will need to have .DEF files for all the
libraries...
I send Walter a short (very short) version for USER32.DLL I think. Before
the next release there are a couple of things that need to be resolved.
One of them is the .DEF files for the libraries and being able to
generated the proper import libs from the (system) .DLL's.

Jan


September 10, 2001
Jan Knepper <jan@smartsoft.cc> wrote:

>I think at sometime we will need to have .DEF files for all the
>libraries...
>I send Walter a short (very short) version for USER32.DLL I think. Before
>the next release there are a couple of things that need to be resolved.
>One of them is the .DEF files for the libraries and being able to
>generated the proper import libs from the (system) .DLL's.

I already have that DEF/import stuff working!  If you want, I
can just send you the PERL script, and the MinGW DEF files, or
the already processed DEF files (just to run your IMPLIB on
them).  For free, of course, I want to help other DM developers,
and even to get the next patch sooner...  Maybe even the void
pointer problem will be adressed, so I'm anxious to see the next patch.


Laurentiu

September 10, 2001
You can send the ready to use .DEF files to me. I would suggest also sending them to Walter. He might decided to put them on the site and/or use/include them on the next CD's...

Jan



Laurentiu Pancescu wrote:

> Jan Knepper <jan@smartsoft.cc> wrote:
>
> >I think at sometime we will need to have .DEF files for all the
> >libraries...
> >I send Walter a short (very short) version for USER32.DLL I think. Before
> >the next release there are a couple of things that need to be resolved.
> >One of them is the .DEF files for the libraries and being able to
> >generated the proper import libs from the (system) .DLL's.
>
> I already have that DEF/import stuff working!  If you want, I
> can just send you the PERL script, and the MinGW DEF files, or
> the already processed DEF files (just to run your IMPLIB on
> them).  For free, of course, I want to help other DM developers,
> and even to get the next patch sooner...  Maybe even the void
> pointer problem will be adressed, so I'm anxious to see the next patch.
>
> Laurentiu