Move __STDC_* predefined macros from features.h to stdc-predef.h.

This commit is contained in:
Joseph Myers 2012-02-22 12:53:04 +00:00
parent ef0aab352c
commit ff3b3d8278
6 changed files with 58 additions and 19 deletions

View File

@ -134,13 +134,12 @@ Compiler limitations
====================
The macros __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__ and
__STDC_ISO_10646__ are properly supposed to be defined by the
compiler, and to be constant throughout the translation unit (before
and after any library headers are included). However, they mainly
relate to library features, and the necessary magic has yet to be
implemented for GCC to predefine them to the correct values for the
library in use, so glibc defines them in <features.h>. Programs that
test them before including any standard headers may misbehave.
__STDC_ISO_10646__ are properly supposed to be constant throughout the
translation unit (before and after any library headers are included).
However, they mainly relate to library features, and GCC only knows to
preinclude <stdc-predef.h> to get their definitions in version 4.8 and
later. Programs that test them before including any standard headers
may misbehave with older compilers.
GCC doesn't support the optional imaginary types. Nor does it
understand the keyword _Complex before GCC 3.0. This has the

View File

@ -1,3 +1,11 @@
2012-02-22 Joseph Myers <joseph@codesourcery.com>
[BZ #10110]
* include/stdc-predef.h: New file. Extracted from features.h.
* include/features.h: Include stdc-predef.h.
* Makefile (headers): Add stdc-predef.h.
* CONFORMANCE (Compiler limitations): Update.
2012-02-22 Joseph Myers <joseph@codesourcery.com>
* manual/libc.texinfo (VERSION, UPDATED): Revert.

View File

@ -60,7 +60,7 @@ endif # $(AUTOCONF) = no
$(addprefix install-, no-libc.a bin lib data headers others)
headers := limits.h values.h features.h gnu-versions.h bits/libc-lock.h \
bits/xopen_lim.h gnu/libc-version.h
bits/xopen_lim.h gnu/libc-version.h stdc-predef.h
echo-headers: subdir_echo-headers

6
NEWS
View File

@ -10,9 +10,9 @@ Version 2.16
* The following bugs are resolved with this release:
174, 350, 411, 3335, 4026, 4596, 4822, 5077, 5805, 5993, 6884, 6907, 9739,
9902, 10140, 10210, 11174, 11322, 11494, 12047, 13058, 13525, 13526,
13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552,
13553, 13555, 13559, 13583, 13618, 13695, 13704
9902, 10110, 10140, 10210, 11174, 11322, 11494, 12047, 13058, 13525,
13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
13552, 13553, 13555, 13559, 13583, 13618, 13695, 13704
* ISO C11 support:

View File

@ -1,5 +1,4 @@
/* Copyright (C) 1991-1993,1995-2007,2009,2010,2011
Free Software Foundation, Inc.
/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -337,12 +336,9 @@
# define __USE_FORTIFY_LEVEL 0
#endif
/* We do support the IEC 559 math functionality, real and complex. */
#define __STDC_IEC_559__ 1
#define __STDC_IEC_559_COMPLEX__ 1
/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */
#define __STDC_ISO_10646__ 200009L
/* Get definitions of __STDC_* predefined macros, if the compiler has
not preincluded this header automatically. */
#include <stdc-predef.h>
/* This macro indicates that the installed library is the GNU C Library.
For historic reasons the value now is 6 and this will stay from now

36
include/stdc-predef.h Normal file
View File

@ -0,0 +1,36 @@
/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _STDC_PREDEF_H
#define _STDC_PREDEF_H 1
/* This header is separate from features.h so that the compiler can
include it implicitly at the start of every compilation. It must
not itself include <features.h> or any other header that includes
<features.h> because the implicit include comes before any feature
test macros that may be defined in a source file before it first
explicitly includes a system header. GCC knows the name of this
header in order to preinclude it. */
/* We do support the IEC 559 math functionality, real and complex. */
#define __STDC_IEC_559__ 1
#define __STDC_IEC_559_COMPLEX__ 1
/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */
#define __STDC_ISO_10646__ 200009L
#endif