[cfe-dev] [libcxx]: a testsuite bug involving boolean type and values
ZhangXiongpang
zhangxiongpang at gmail.com
Wed Oct 10 16:09:53 PDT 2012
Jordan Rose wrote
> Hello, Xiongpang. Notice that this particular test case is compiled as
> C++. In C++,
> <stdbool.h>
> does not actually have to do anything. From C++11 [support.runtime]p8:
> "The header
> <cstdbool>
> and the header
> <stdbool.h>
> shall not define macros named bool, true, or false."
>
> For C, of course, the header must define the four macros.
>
> Best,
> Jordan
>
>
> On Oct 9, 2012, at 22:53 , ZhangXiongpang <
> zhangxiongpang@
> > wrote:
>
>> I saw the code in
>> test/depr/depr.c.headers/stdbool_h.pass.cpp
>> as follows:
>> --------------------------------------------------
>> #include
> <stdbool.h>
>>
>> #ifndef __bool_true_false_are_defined
>> #error __bool_true_false_are_defined not defined
>> #endif
>>
>> #ifdef bool // why bool should not be defined?
>> #error bool should not be defined
>> #endif
>>
>> #ifdef true // idem
>> #error true should not be defined
>> #endif
>>
>> #ifdef false // idem
>> #error false should not be defined
>> #endif
>> --------------------------------------------------
>>
>> Why bool/true/false should not be defined?
>> Is it a bug of the stdbool_h.pass.cpp?
>> I think it should be:
>> --------------------------------------------------
>> #ifndef bool
>> #error bool should not defined
>> #endif
>>
>> #ifndef true
>> #error true should not defined
>> #endif
>>
>> #ifndef false
>> #error false should not defined
>> #endif
>> --------------------------------------------------
>>
>> Because the section 7.18 of n1548.pdf
>> <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf> says:
>> --------------------------------------------------
>> 7.18 Boolean type and values
> <stdbool.h>
>> 1 The header
> <stdbool.h>
> defines four macros.
>> 2 The macro bool expands to _Bool.
>> 3 The remaining three macros are suitable for use in #if preprocessing
>> directives. They are true which expands to the integer constant 1, false
>> which expands to the integer constant 0, and _bool_true_false_are_defined
>> which expands to the integer constant 1.
>> --------------------------------------------------
>>
>>
>>
>> --
>> View this message in context:
>> http://clang-developers.42468.n3.nabble.com/libcxx-a-testsuite-bug-involving-boolean-type-and-values-tp4027262.html
>> Sent from the Clang Developers mailing list archive at Nabble.com.
>> _______________________________________________
>> cfe-dev mailing list
>>
> cfe-dev at .uiuc
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at .uiuc
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
Thanks Jordan!
Zhang Xiongpang
--
View this message in context: http://clang-developers.42468.n3.nabble.com/libcxx-a-testsuite-bug-involving-boolean-type-and-values-tp4027262p4027282.html
Sent from the Clang Developers mailing list archive at Nabble.com.
More information about the cfe-dev
mailing list