|
Boost : |
Subject: Re: [boost] WCHAR_MAX not defined on openbsd
From: Bo Persson (bop_at_[hidden])
Date: 2010-08-16 17:24:35
Kim Barrett wrote:
> On Aug 16, 2010, at 1:17 PM, Bo Persson wrote:
>
>> Kim Barrett wrote:
>>> On Aug 15, 2010, at 12:09 PM, John Maddock wrote:
>>>> The std doesn't specify that some magic macro has to be defined
>>>> before WCHAR_MAX gets defined
>>>
>>> The C++ standard doesn't, but the C99 standard does! See footnote
>>> in 7.18.2 Limits of specified-width integer types. This is one of
>>> several places where C99 added features to C89 and notes that "C++
>>> implementations should define these macros only when ..." some
>>> specified macro is defined before the relevant header is included.
>>>
>>> And of course that specified behavior is probably quite wrong for
>>> C++0x, but the C99 standard doesn't mention the scope of that
>>> behavior. And to add to the confusion, it is worded as a "should"
>>> rather than a "shall".
>>>
>>
>> It is wrong for C++0x, which specifically mentions that the macros
>> are NOT to be used in <cstdint>.
>> §18.4.1
>
> That's not how I read 18.4.1. Quoting from n3092 (the most recent
> draft I happen to have handy), 18.4.1/2 says
>
> The header defines all functions, types, and macros the same as
> 7.18 in the C standard. [Note: The macros defined by <cstdint>
> are provided unconditionally. In particular, the symbols
> __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS (mentioned in
> footnotes 219, 220, and 222 in the C standard) play no role in
> C++. -- end note]
>
> I read that as saying that macros such as WCHAR_MAX are always
> defined
> by <cstdint>, irrespective of any definitions (or lack thereof) for
> __STDC_LIMIT_MACROS.
>
Right. That's exactly what I meant to say. :-)
Bo Persson
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk