svn commit: r228878 - head/include

Sean C. Farley scf at FreeBSD.org
Fri Dec 30 16:52:23 UTC 2011


On Thu, 29 Dec 2011, mdf at FreeBSD.org wrote:

> On Thu, Dec 29, 2011 at 6:54 PM, Sean C. Farley <scf at freebsd.org> wrote:
>> On Sun, 25 Dec 2011, Ed Schouten wrote:
>>
>>> Author: ed
>>> Date: Sun Dec 25 20:15:41 2011
>>> New Revision: 228878
>>> URL: http://svn.freebsd.org/changeset/base/228878
>>>
>>> Log:
>>>  Remove unneeded guard.
>>>
>>>  There is no reason why <stdbool.h> needs an include guard. It is already
>>>  protected by __bool_true_false_are_defined.
>>>
>>> Modified:
>>>  head/include/stdbool.h
>>>
>>> Modified: head/include/stdbool.h
>>>
>>> ==============================================================================
>>> --- head/include/stdbool.h      Sun Dec 25 18:15:31 2011        (r228877)
>>> +++ head/include/stdbool.h      Sun Dec 25 20:15:41 2011        (r228878)
>>> @@ -26,9 +26,6 @@
>>>  * $FreeBSD$
>>>  */
>>>
>>> -#ifndef _STDBOOL_H_
>>> -#define        _STDBOOL_H_
>>> -
>>> #ifndef __bool_true_false_are_defined
>>> #define __bool_true_false_are_defined   1
>>>
>>> @@ -44,5 +41,3 @@ typedef       int     _Bool;
>>>
>>> #endif /* !__cplusplus */
>>> #endif /* __bool_true_false_are_defined */
>>> -
>>> -#endif /* !_STDBOOL_H_ */
>>
>>
>> I just thought of this while reviewing the change:  should 
>> __bool_true_false_are_defined be set only if __cplusplus is not set? 
>> It should be set for C99, but I wonder if it should be set for C++.
>
> My quick googling didn't show anything at all about the C++ standard 
> and stdbool.h or __bool_true_false_are_defined.  It was probably 
> originally set because bool, true, and false are all C++ keywords so 
> certain code that wanted to ifdef on them didn't also need to check 
> __cplusplus.

I did not find anything definitive either.

>> Also, is there a style requirement that the guard for a header file 
>> be based off of the name of the file?  I did not see anything obvious 
>> for this within style(9), but I am curious.
>
> I think it's just common use to make sure different headers use a 
> different include guard, so they only protect their contents, not any 
> other file's.  The C standard only mentions the symbols bool, true, 
> false, and __bool_true_false_are_defined in regards to stdbool.h.

Thank you.  I asked since I have only really noticed filename-based 
guards in the tree although not all are this way (i.e., bsdxml.h uses 
Expat_INCLUDED).

Sean
-- 
scf at FreeBSD.org


More information about the svn-src-all mailing list