Re: svn commit: r228878 - head/include
On 30 Dec 2011, at 16:52, Sean C. Farley wrote: >> 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. It's usually a better idea to check the spec than Google... stdbool.h is not part of the C++ standard, and so it is free to contain anything in C++ mode, just as any other non-standard header is. The header is defined by the C++11 spec as containing JUST the __bool_true_false_are_defined macro. The purpose of this header in C++ mode is to allow the inclusion of C++ headers that expect to be able to use true and false and guard this by the use of the __bool_true_false_are_defined macro. David___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r228878 - head/include
On Fri, 30 Dec 2011, Ed Schouten wrote: Hello Sean, * Sean C. Farley , 20111230 03:54: 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++. Even if the C++ standard doesn't mention it at all, I think it doesn't mean it is forbidden to define it. It starts with __[a-z], so it is in the reserved namespace. I am fine with it. I found many variations of stdbool.h with some wrapping __bool_true_false_are_defined within the __cplusplus check (e.g., glibc) and some that did not. glibc may have it because stdbool.h is included from cstdbool and stdbool.h in /usr/include/c++/4.2/tr1/. 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 am not aware of this. I am not aware of it either, hence, my question. It was just something to which I have grown accustomed. Using __bool_true_false_are_defined as the guard works. Sean -- s...@freebsd.org ___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r228878 - head/include
On Thu, 29 Dec 2011, m...@freebsd.org wrote: On Thu, Dec 29, 2011 at 6:54 PM, Sean C. Farley 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 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 -- s...@freebsd.org___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r228878 - head/include
Hello Sean, * Sean C. Farley , 20111230 03:54: > 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++. Even if the C++ standard doesn't mention it at all, I think it doesn't mean it is forbidden to define it. It starts with __[a-z], so it is in the reserved namespace. > 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 am not aware of this. -- Ed Schouten WWW: http://80386.nl/ pgpC2dauwZxru.pgp Description: PGP signature
Re: svn commit: r228878 - head/include
On Thu, Dec 29, 2011 at 6:54 PM, Sean C. Farley 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 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. > 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. Cheers, matthew ___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r228878 - head/include
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 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++. 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. Sean -- s...@freebsd.org ___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"