Daniel Shahaf <d...@daniel.shahaf.name> writes:

> Philip Martin wrote on Thu, Oct 13, 2011 at 18:44:44 +0100:
>> Daniel Shahaf <d...@daniel.shahaf.name> writes:
>> 
>> > First of all, I made the same patch yesterday elsewhere.
>> 
>> Another bug :)
>> 
>> > Second of all, the use is #if, not #ifdef, so I believe the macro is
>> > always defined (to 0 or 1).
>> 
>> The one doesn't follow from the other.  In either case the macro could
>> be zero, non-zero, no value or not defined:
>> 
>>                                      #if                #ifdef
>> #define APR_HAS_THREADS 1            true               true
>> #define APR_HAS_THREADS 0            false              true
>> #define APR_HAS_THREADS              true               true
>> <nothing>                            false              false
>> 
>
> Is this standard behaviour?

I believe so.

>
>> So not defining APR_HAS_THREADS is a valid way to define no thread
>> support, but it means you can't use APR_HAS_THREADS directly as a
>> variable.
>> 
>> It's possible that APR will always ensure that APR_HAS_THREADS is either
>> 0 or 1, but the C language does not.
>> 
>
> My reading of
> http://svn.apache.org/repos/asf/apr/apr/tags/0.9.0/include/apr.h.in
> http://svn.apache.org/repos/asf/apr/apr/tags/0.9.0/include/apr.hnw
> http://svn.apache.org/repos/asf/apr/apr/tags/0.9.0/include/apr.hw
> is that APR_HAS_THREADS is always defined.

Then we would be relying on APR to do it.  It's not the way all
preprocessor symbols are defined, for example svn_private_config.h
generally uses <nothing> rather than #define XXX 0 and APR does the same
for APR_IS_DEV_VERSION.

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com

Reply via email to