2009/10/23 Zhang Lin <zhanglin0...@163.com>:
> Hello,
> I have encountered an issue when building ACE with MinGW and GCC 4.4.1
> The following macro was not accepted by the preprocessor and it reported such 
> an error: "error: operator '==' has no left operand".
>
> #if !defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER)
> # define ACE_HAS_NONSTATIC_OBJECT_MANAGER
> #elif (ACE_HAS_NONSTATIC_OBJECT_MANAGER == 0)
> # undef ACE_HAS_NONSTATIC_OBJECT_MANAGER
> #endif /* ACE_HAS_NONSTATIC_OBJECT_MANAGER */
>
> As I think, since ACE_HAS_NONSTATIC_OBJECT_MANAGER isn't defined, the #elif 
> branch should not be processed.
> This macro is accepted by VC7.1 and Sun Studio 12.
>
> Thanks.
>
> Best Regards,
> Lin Zhang
> 2009-10-23

You'll get this error if ACE_HAS_NONSTATIC_OBJECT_MANAGER is defined,
but has a null value - i.e. if somewhere before it was:

#define ACE_HAS_NONSTATIC_OBJECT_MANAGER

and not:

#define ACE_HAS_NONSTATIC_OBJECT_MANAGER 1

(for example)

I'm not sure if there's a way to test for a macro being null, but if
you change your previous declarations to defining it so something
instead of nothing, everything should be dandy.

John G

Reply via email to