manual: Update _DEFAULT_SOURCE. [BZ #22862]

The description of the interplay between feature test macros and
compiler options in the description of _DEFAULT_SOURCE is a little
confusing, and dated, so clarify the situation, and don't assume a
specific value for _DEFAULT_SOURCE.

Also, _DEFAULT_SOURCE is supposed to be defined if none of the C/POSIX
feature test macros are defined, but the condition was lacking a test
for _ISOC11_SOURCE, so that is also addressed.

	[BZ #22862]
	* include/features.h: Add _ISOC11_SOURCE to test for whether
	to define _DEFAULT_SOURCE.
	* manual/creature.texi (_DEFAULT_SOURCE): Improve
	documentation.
This commit is contained in:
Rical Jasan 2018-02-19 04:37:16 -08:00
parent 999a6dab3e
commit 862b45026f
3 changed files with 22 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2018-02-21 Rical Jasan <ricaljasan@pacific.net>
[BZ #22862]
* include/features.h: Add _ISOC11_SOURCE to test for whether to
define _DEFAULT_SOURCE.
* manual/creature.texi (_DEFAULT_SOURCE): Improve documentation.
2018-02-21 Florian Weimer <fweimer@redhat.com> 2018-02-21 Florian Weimer <fweimer@redhat.com>
[BZ #20890] [BZ #20890]

View File

@ -214,7 +214,7 @@
define _DEFAULT_SOURCE. */ define _DEFAULT_SOURCE. */
#if (defined _DEFAULT_SOURCE \ #if (defined _DEFAULT_SOURCE \
|| (!defined __STRICT_ANSI__ \ || (!defined __STRICT_ANSI__ \
&& !defined _ISOC99_SOURCE \ && !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE \
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \ && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \
&& !defined _XOPEN_SOURCE)) && !defined _XOPEN_SOURCE))
# undef _DEFAULT_SOURCE # undef _DEFAULT_SOURCE

View File

@ -221,13 +221,20 @@ precedence.
If you define this macro, most features are included apart from If you define this macro, most features are included apart from
X/Open, LFS and GNU extensions: the effect is to enable features from X/Open, LFS and GNU extensions: the effect is to enable features from
the 2008 edition of POSIX, as well as certain BSD and SVID features the 2008 edition of POSIX, as well as certain BSD and SVID features
without a separate feature test macro to control them. Defining this without a separate feature test macro to control them.
macro, on its own and without using compiler options such as
@option{-ansi} or @option{-std=c99}, has the same effect as not Be aware that compiler options also affect included features:
defining any feature test macros; defining it together with other
feature test macros, or when options such as @option{-ansi} are used, @itemize
enables those features even when the other options would otherwise @item
cause them to be disabled. If you use a strict conformance option, features beyond those from the
compiler's language version will be disabled, though feature test
macros may be used to enable them.
@item
Features enabled by compiler options are not overridden by feature
test macros.
@end itemize
@end defvr @end defvr
@defvr Macro _ATFILE_SOURCE @defvr Macro _ATFILE_SOURCE