This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: V3 PATCH: numeric_limits<> support, fix PR/3865
- From: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- To: Graham Stott <graham dot stott at btinternet dot com>
- Cc: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: 28 Aug 2002 23:20:49 +0200
- Subject: Re: V3 PATCH: numeric_limits<> support, fix PR/3865
- Organization: Integrable Solutions
- References: <m38z2sxcnk.fsf@soliton.integrable-solutions.net> <3D6C0942.2020706@btinternet.com>
Graham Stott <graham.stott@btinternet.com> writes:
| This patch causes problems building x86 cross v850-elf, and arm-elf toolchains
| which both fail with
|
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:56: error: excess elements
| in aggregate initializer
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:58: error: excess elements
| in aggregate initializer
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:60: error: excess elements
| in aggregate initializer
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:62: error: excess elements
| in aggregate initializer
|
| I suspect that other ports are also affected.
The patch below lets me have a clean build for a cross-compiler mips-elf.
It predefined several data type precision we're trying to second-guess
or having duplicated configuration files for. When compiling C++, it
also predefined __WCHAR_UNSIGNED__ based on the fact that wchar_t (a
distinct type in C++) is unsigned or not.
I'm about to apply it in order to bring mainline V3 buildable on
the affected ports.
Comments?
-- Gaby
gcc/
2002-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
* c-common.c (builtin_define_type_precision): New function.
(cb_register_builtins): Use it. Define __WCHAR_UNSIGNED__ is
wchar_t is unsigned in C++.
* doc/cpp.texi (Common Predefined Macros): Document
__WCHAR_UNSIGNED__, __CHAR_BIT__, __WCHAR_BIT__, __SHRT_BIT__,
__INT_BIT__, __LONG_BIT__, __LONG_LONG_BIT__, __FLOAT_BIT__,
__DOUBLE_BIT__, __LONG_DOUBLE_BIT__.
libstdc++-v3/
2002-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
* include/std/std_limits.h (__glibcpp_char_bits,
__glibcpp_short_bits, __glibcpp_int_bits, __glibcpp_long_bits,
__glibcpp_long_long_bits, __glibcpp_float_bits,
__glibcpp_double_bits, __glibcpp_long_double_bits): Remove. Use
compiler predifined macros.
(__glibcpp_wchar_t_is_signed): Define based on compiler predefined
__WCHAR_UNSIGNED__.
Index: gcc/c-common.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/c-common.c,v
retrieving revision 1.369
diff -p -r1.369 c-common.c
*** gcc/c-common.c 27 Aug 2002 22:14:44 -0000 1.369
--- gcc/c-common.c 28 Aug 2002 21:17:24 -0000
*************** static bool get_nonnull_operand PARAMS
*** 760,768 ****
unsigned HOST_WIDE_INT *));
void builtin_define_std PARAMS ((const char *));
static void builtin_define_with_value PARAMS ((const char *, const char *,
! int));
static void builtin_define_type_max PARAMS ((const char *, tree, int));
static void cpp_define_data_format PARAMS ((cpp_reader *));
/* Table of machine-independent attributes common to all C-like languages. */
const struct attribute_spec c_common_attribute_table[] =
--- 760,769 ----
unsigned HOST_WIDE_INT *));
void builtin_define_std PARAMS ((const char *));
static void builtin_define_with_value PARAMS ((const char *, const char *,
! int));
static void builtin_define_type_max PARAMS ((const char *, tree, int));
static void cpp_define_data_format PARAMS ((cpp_reader *));
+ static void builtin_define_type_precision PARAMS ((const char *, tree));
/* Table of machine-independent attributes common to all C-like languages. */
const struct attribute_spec c_common_attribute_table[] =
*************** cpp_define_data_format (pfile)
*** 4765,4770 ****
--- 4766,4782 ----
builtin_define_with_value ("__GCC_FLOAT_FORMAT__", format, 0);
}
+ /* Define NAME with value TYPE precision. */
+ static void
+ builtin_define_type_precision (name, type)
+ const char *name;
+ tree type;
+ {
+ char buf[8];
+ sprintf (buf, "%d", (int) TYPE_PRECISION (type));
+ builtin_define_with_value (name, buf, 0);
+ }
+
/* Hook that registers front end and target-specific built-ins. */
void
cb_register_builtins (pfile)
*************** cb_register_builtins (pfile)
*** 4807,4817 ****
builtin_define_type_max ("__LONG_MAX__", long_integer_type_node, 1);
builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node, 2);
! {
! char buf[8];
! sprintf (buf, "%d", (int) TYPE_PRECISION (signed_char_type_node));
! builtin_define_with_value ("__CHAR_BIT__", buf, 0);
! }
/* For use in assembly language. */
builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
--- 4819,4834 ----
builtin_define_type_max ("__LONG_MAX__", long_integer_type_node, 1);
builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node, 2);
! builtin_define_type_precision ("__CHAR_BIT__", char_type_node);
! builtin_define_type_precision ("__WCHAR_BIT__", wchar_type_node);
! builtin_define_type_precision ("__SHRT_BIT__", short_integer_type_node);
! builtin_define_type_precision ("__INT_BIT__", integer_type_node);
! builtin_define_type_precision ("__LONG_BIT__", long_integer_type_node);
! builtin_define_type_precision ("__LONG_LONG_BIT__",
! long_long_integer_type_node);
! builtin_define_type_precision ("__FLOAT_BIT__", float_type_node);
! builtin_define_type_precision ("__DOUBLE_BIT__", double_type_node);
! builtin_define_type_precision ("__LONG_DOUBLE_BIT__", long_double_type_node);
/* For use in assembly language. */
builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
*************** cb_register_builtins (pfile)
*** 4848,4853 ****
--- 4865,4873 ----
if (!flag_signed_char)
cpp_define (pfile, "__CHAR_UNSIGNED__");
+
+ if (c_language == clk_cplusplus && TREE_UNSIGNED (wchar_type_node))
+ cpp_define (pfile, "__WCHAR_UNSIGNED__");
cpp_define_data_format (pfile);
Index: libstdc++-v3/include/std/std_limits.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/std/std_limits.h,v
retrieving revision 1.7
diff -p -r1.7 std_limits.h
*** libstdc++-v3/include/std/std_limits.h 27 Aug 2002 20:30:26 -0000 1.7
--- libstdc++-v3/include/std/std_limits.h 28 Aug 2002 21:17:27 -0000
***************
*** 77,120 ****
// definitions given here.
//
- // These values can be overridden in the target configuration file.
- // The default values are appropriate for many 32-bit targets.
-
- #ifndef __glibcpp_char_bits
- # define __glibcpp_char_bits 8
- #endif
#ifdef __CHAR_UNSIGNED__
# define __glibcpp_plain_char_is_signed false
#else
# define __glibcpp_plain_char_is_signed true
#endif
! #ifndef __glibcpp_short_bits
! # define __glibcpp_short_bits 16
! #endif
! #ifndef __glibcpp_int_bits
! # define __glibcpp_int_bits 32
! #endif
! #ifndef __glibcpp_long_bits
! # define __glibcpp_long_bits 32
! #endif
! #ifndef __glibcpp_wchar_t_bits
! # define __glibcpp_wchar_t_bits 32
! #endif
! #ifndef __glibcpp_wchar_t_is_signed
# define __glibcpp_wchar_t_is_signed true
#endif
! #ifndef __glibcpp_long_long_bits
! # define __glibcpp_long_long_bits 64
! #endif
! #ifndef __glibcpp_float_bits
! # define __glibcpp_float_bits 32
! #endif
! #ifndef __glibcpp_double_bits
! # define __glibcpp_double_bits 64
! #endif
! #ifndef __glibcpp_long_double_bits
! # define __glibcpp_long_double_bits 128
! #endif
#ifndef __glibcpp_char_traps
# define __glibcpp_char_traps true
--- 77,96 ----
// definitions given here.
//
#ifdef __CHAR_UNSIGNED__
# define __glibcpp_plain_char_is_signed false
#else
# define __glibcpp_plain_char_is_signed true
#endif
!
! #ifndef __WCHAR_UNSIGNED__
! # define __glibcpp_wchar_t_is_signed false
! #else
# define __glibcpp_wchar_t_is_signed true
#endif
!
! // These values can be overridden in the target configuration file.
! // The default values are appropriate for many 32-bit targets.
#ifndef __glibcpp_char_traps
# define __glibcpp_char_traps true
***************
*** 430,436 ****
#ifndef __glibcpp_signed_char_is_modulo
# define __glibcpp_signed_char_is_modulo true
#endif
! #if __glibcpp_char_bits == 8
# define __glibcpp_signed_char_min __glibcpp_s8_min
# define __glibcpp_signed_char_max __glibcpp_s8_max
# define __glibcpp_signed_char_digits __glibcpp_s8_digits
--- 406,412 ----
#ifndef __glibcpp_signed_char_is_modulo
# define __glibcpp_signed_char_is_modulo true
#endif
! #if __CHAR_BIT__ == 8
# define __glibcpp_signed_char_min __glibcpp_s8_min
# define __glibcpp_signed_char_max __glibcpp_s8_max
# define __glibcpp_signed_char_digits __glibcpp_s8_digits
***************
*** 439,445 ****
# define __glibcpp_unsigned_char_max __glibcpp_u8_max
# define __glibcpp_unsigned_char_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10
! #elif __glibcpp_char_bits == 16
# define __glibcpp_signed_char_min __glibcpp_s16_min
# define __glibcpp_signed_char_max __glibcpp_s16_max
# define __glibcpp_signed_char_digits __glibcpp_s16_digits
--- 415,421 ----
# define __glibcpp_unsigned_char_max __glibcpp_u8_max
# define __glibcpp_unsigned_char_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10
! #elif __CHAR_BIT__ == 16
# define __glibcpp_signed_char_min __glibcpp_s16_min
# define __glibcpp_signed_char_max __glibcpp_s16_max
# define __glibcpp_signed_char_digits __glibcpp_s16_digits
***************
*** 448,454 ****
# define __glibcpp_unsigned_char_max __glibcpp_u16_max
# define __glibcpp_unsigned_char_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10
! #elif __glibcpp_char_bits == 32
# define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min
# define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max
# define __glibcpp_signed_char_digits __glibcpp_s32_digits
--- 424,430 ----
# define __glibcpp_unsigned_char_max __glibcpp_u16_max
# define __glibcpp_unsigned_char_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10
! #elif __CHAR_BIT__ == 32
# define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min
# define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max
# define __glibcpp_signed_char_digits __glibcpp_s32_digits
***************
*** 457,463 ****
# define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max
# define __glibcpp_unsigned_char_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10
! #elif __glibcpp_char_bits == 64
# define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min
# define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max
# define __glibcpp_signed_char_digits __glibcpp_s64_digits
--- 433,439 ----
# define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max
# define __glibcpp_unsigned_char_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10
! #elif __CHAR_BIT__ == 64
# define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min
# define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max
# define __glibcpp_signed_char_digits __glibcpp_s64_digits
***************
*** 489,495 ****
#ifndef __glibcpp_signed_short_is_modulo
# define __glibcpp_signed_short_is_modulo true
#endif
! #if __glibcpp_short_bits == 8
# define __glibcpp_signed_short_min __glibcpp_s8_min
# define __glibcpp_signed_short_max __glibcpp_s8_max
# define __glibcpp_signed_short_digits __glibcpp_s8_digits
--- 465,471 ----
#ifndef __glibcpp_signed_short_is_modulo
# define __glibcpp_signed_short_is_modulo true
#endif
! #if __SHRT_BIT__ == 8
# define __glibcpp_signed_short_min __glibcpp_s8_min
# define __glibcpp_signed_short_max __glibcpp_s8_max
# define __glibcpp_signed_short_digits __glibcpp_s8_digits
***************
*** 498,504 ****
# define __glibcpp_unsigned_short_max __glibcpp_u8_max
# define __glibcpp_unsigned_short_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10
! #elif __glibcpp_short_bits == 16
# define __glibcpp_signed_short_min __glibcpp_s16_min
# define __glibcpp_signed_short_max __glibcpp_s16_max
# define __glibcpp_signed_short_digits __glibcpp_s16_digits
--- 474,480 ----
# define __glibcpp_unsigned_short_max __glibcpp_u8_max
# define __glibcpp_unsigned_short_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10
! #elif __SHRT_BIT__ == 16
# define __glibcpp_signed_short_min __glibcpp_s16_min
# define __glibcpp_signed_short_max __glibcpp_s16_max
# define __glibcpp_signed_short_digits __glibcpp_s16_digits
***************
*** 507,513 ****
# define __glibcpp_unsigned_short_max __glibcpp_u16_max
# define __glibcpp_unsigned_short_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10
! #elif __glibcpp_short_bits == 32
# define __glibcpp_signed_short_min (short)__glibcpp_s32_min
# define __glibcpp_signed_short_max (short)__glibcpp_s32_max
# define __glibcpp_signed_short_digits __glibcpp_s32_digits
--- 483,489 ----
# define __glibcpp_unsigned_short_max __glibcpp_u16_max
# define __glibcpp_unsigned_short_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10
! #elif __SHRT_BIT__ == 32
# define __glibcpp_signed_short_min (short)__glibcpp_s32_min
# define __glibcpp_signed_short_max (short)__glibcpp_s32_max
# define __glibcpp_signed_short_digits __glibcpp_s32_digits
***************
*** 516,522 ****
# define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max
# define __glibcpp_unsigned_short_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10
! #elif __glibcpp_short_bits == 64
# define __glibcpp_signed_short_min (short)__glibcpp_s64_min
# define __glibcpp_signed_short_max (short)__glibcpp_s64_max
# define __glibcpp_signed_short_digits __glibcpp_s64_digits
--- 492,498 ----
# define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max
# define __glibcpp_unsigned_short_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10
! #elif __SHRT_BIT__ == 64
# define __glibcpp_signed_short_min (short)__glibcpp_s64_min
# define __glibcpp_signed_short_max (short)__glibcpp_s64_max
# define __glibcpp_signed_short_digits __glibcpp_s64_digits
***************
*** 536,542 ****
#ifndef __glibcpp_signed_int_is_modulo
# define __glibcpp_signed_int_is_modulo true
#endif
! #if __glibcpp_int_bits == 8
# define __glibcpp_signed_int_min __glibcpp_s8_min
# define __glibcpp_signed_int_max __glibcpp_s8_max
# define __glibcpp_signed_int_digits __glibcpp_s8_digits
--- 512,518 ----
#ifndef __glibcpp_signed_int_is_modulo
# define __glibcpp_signed_int_is_modulo true
#endif
! #if __INT_BIT__ == 8
# define __glibcpp_signed_int_min __glibcpp_s8_min
# define __glibcpp_signed_int_max __glibcpp_s8_max
# define __glibcpp_signed_int_digits __glibcpp_s8_digits
***************
*** 545,551 ****
# define __glibcpp_unsigned_int_max __glibcpp_u8_max
# define __glibcpp_unsigned_int_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10
! #elif __glibcpp_int_bits == 16
# define __glibcpp_signed_int_min __glibcpp_s16_min
# define __glibcpp_signed_int_max __glibcpp_s16_max
# define __glibcpp_signed_int_digits __glibcpp_s16_digits
--- 521,527 ----
# define __glibcpp_unsigned_int_max __glibcpp_u8_max
# define __glibcpp_unsigned_int_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10
! #elif __INT_BIT__ == 16
# define __glibcpp_signed_int_min __glibcpp_s16_min
# define __glibcpp_signed_int_max __glibcpp_s16_max
# define __glibcpp_signed_int_digits __glibcpp_s16_digits
***************
*** 554,560 ****
# define __glibcpp_unsigned_int_max __glibcpp_u16_max
# define __glibcpp_unsigned_int_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10
! #elif __glibcpp_int_bits == 32
# define __glibcpp_signed_int_min (int)__glibcpp_s32_min
# define __glibcpp_signed_int_max (int)__glibcpp_s32_max
# define __glibcpp_signed_int_digits __glibcpp_s32_digits
--- 530,536 ----
# define __glibcpp_unsigned_int_max __glibcpp_u16_max
# define __glibcpp_unsigned_int_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10
! #elif __INT_BIT__ == 32
# define __glibcpp_signed_int_min (int)__glibcpp_s32_min
# define __glibcpp_signed_int_max (int)__glibcpp_s32_max
# define __glibcpp_signed_int_digits __glibcpp_s32_digits
***************
*** 563,569 ****
# define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max
# define __glibcpp_unsigned_int_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10
! #elif __glibcpp_int_bits == 64
# define __glibcpp_signed_int_min (int)__glibcpp_s64_min
# define __glibcpp_signed_int_max (int)__glibcpp_s64_max
# define __glibcpp_signed_int_digits __glibcpp_s64_digits
--- 539,545 ----
# define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max
# define __glibcpp_unsigned_int_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10
! #elif __INT_BIT__ == 64
# define __glibcpp_signed_int_min (int)__glibcpp_s64_min
# define __glibcpp_signed_int_max (int)__glibcpp_s64_max
# define __glibcpp_signed_int_digits __glibcpp_s64_digits
***************
*** 583,589 ****
#ifndef __glibcpp_signed_long_is_modulo
# define __glibcpp_signed_long_is_modulo true
#endif
! #if __glibcpp_long_bits == 8
# define __glibcpp_signed_long_min __glibcpp_s8_min
# define __glibcpp_signed_long_max __glibcpp_s8_max
# define __glibcpp_signed_long_digits __glibcpp_s8_digits
--- 559,565 ----
#ifndef __glibcpp_signed_long_is_modulo
# define __glibcpp_signed_long_is_modulo true
#endif
! #if __LONG_BIT__ == 8
# define __glibcpp_signed_long_min __glibcpp_s8_min
# define __glibcpp_signed_long_max __glibcpp_s8_max
# define __glibcpp_signed_long_digits __glibcpp_s8_digits
***************
*** 592,598 ****
# define __glibcpp_unsigned_long_max __glibcpp_u8_max
# define __glibcpp_unsigned_long_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10
! #elif __glibcpp_long_bits == 16
# define __glibcpp_signed_long_min __glibcpp_s16_min
# define __glibcpp_signed_long_max __glibcpp_s16_max
# define __glibcpp_signed_long_digits __glibcpp_s16_digits
--- 568,574 ----
# define __glibcpp_unsigned_long_max __glibcpp_u8_max
# define __glibcpp_unsigned_long_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10
! #elif __LONG_BIT__ == 16
# define __glibcpp_signed_long_min __glibcpp_s16_min
# define __glibcpp_signed_long_max __glibcpp_s16_max
# define __glibcpp_signed_long_digits __glibcpp_s16_digits
***************
*** 601,607 ****
# define __glibcpp_unsigned_long_max __glibcpp_u16_max
# define __glibcpp_unsigned_long_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10
! #elif __glibcpp_long_bits == 32
# define __glibcpp_signed_long_min __glibcpp_s32_min
# define __glibcpp_signed_long_max __glibcpp_s32_max
# define __glibcpp_signed_long_digits __glibcpp_s32_digits
--- 577,583 ----
# define __glibcpp_unsigned_long_max __glibcpp_u16_max
# define __glibcpp_unsigned_long_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10
! #elif __LONG_BIT__ == 32
# define __glibcpp_signed_long_min __glibcpp_s32_min
# define __glibcpp_signed_long_max __glibcpp_s32_max
# define __glibcpp_signed_long_digits __glibcpp_s32_digits
***************
*** 610,616 ****
# define __glibcpp_unsigned_long_max __glibcpp_u32_max
# define __glibcpp_unsigned_long_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10
! #elif __glibcpp_long_bits == 64
# define __glibcpp_signed_long_min (long)__glibcpp_s64_min
# define __glibcpp_signed_long_max (long)__glibcpp_s64_max
# define __glibcpp_signed_long_digits __glibcpp_s64_digits
--- 586,592 ----
# define __glibcpp_unsigned_long_max __glibcpp_u32_max
# define __glibcpp_unsigned_long_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10
! #elif __LONG_BIT__ == 64
# define __glibcpp_signed_long_min (long)__glibcpp_s64_min
# define __glibcpp_signed_long_max (long)__glibcpp_s64_max
# define __glibcpp_signed_long_digits __glibcpp_s64_digits
***************
*** 630,636 ****
#ifndef __glibcpp_signed_long_long_is_modulo
# define __glibcpp_signed_long_long_is_modulo true
#endif
! #if __glibcpp_long_long_bits == 8
# define __glibcpp_signed_long_long_min __glibcpp_s8_min
# define __glibcpp_signed_long_long_max __glibcpp_s8_max
# define __glibcpp_signed_long_long_digits __glibcpp_s8_digits
--- 606,612 ----
#ifndef __glibcpp_signed_long_long_is_modulo
# define __glibcpp_signed_long_long_is_modulo true
#endif
! #if __LONG_LONG_BIT__ == 8
# define __glibcpp_signed_long_long_min __glibcpp_s8_min
# define __glibcpp_signed_long_long_max __glibcpp_s8_max
# define __glibcpp_signed_long_long_digits __glibcpp_s8_digits
***************
*** 639,645 ****
# define __glibcpp_unsigned_long_long_max __glibcpp_u8_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10
! #elif __glibcpp_long_long_bits == 16
# define __glibcpp_signed_long_long_min __glibcpp_s16_min
# define __glibcpp_signed_long_long_max __glibcpp_s16_max
# define __glibcpp_signed_long_long_digits __glibcpp_s16_digits
--- 615,621 ----
# define __glibcpp_unsigned_long_long_max __glibcpp_u8_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10
! #elif __LONG_LONG_BIT__ == 16
# define __glibcpp_signed_long_long_min __glibcpp_s16_min
# define __glibcpp_signed_long_long_max __glibcpp_s16_max
# define __glibcpp_signed_long_long_digits __glibcpp_s16_digits
***************
*** 648,654 ****
# define __glibcpp_unsigned_long_long_max __glibcpp_u16_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10
! #elif __glibcpp_long_long_bits == 32
# define __glibcpp_signed_long_long_min __glibcpp_s32_min
# define __glibcpp_signed_long_long_max __glibcpp_s32_max
# define __glibcpp_signed_long_long_digits __glibcpp_s32_digits
--- 624,630 ----
# define __glibcpp_unsigned_long_long_max __glibcpp_u16_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10
! #elif __LONG_LONG_BIT__ == 32
# define __glibcpp_signed_long_long_min __glibcpp_s32_min
# define __glibcpp_signed_long_long_max __glibcpp_s32_max
# define __glibcpp_signed_long_long_digits __glibcpp_s32_digits
***************
*** 657,663 ****
# define __glibcpp_unsigned_long_long_max __glibcpp_u32_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10
! #elif __glibcpp_long_long_bits == 64
# define __glibcpp_signed_long_long_min __glibcpp_s64_min
# define __glibcpp_signed_long_long_max __glibcpp_s64_max
# define __glibcpp_signed_long_long_digits __glibcpp_s64_digits
--- 633,639 ----
# define __glibcpp_unsigned_long_long_max __glibcpp_u32_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10
! #elif __LONG_LONG_BIT__ == 64
# define __glibcpp_signed_long_long_min __glibcpp_s64_min
# define __glibcpp_signed_long_long_max __glibcpp_s64_max
# define __glibcpp_signed_long_long_digits __glibcpp_s64_digits
***************
*** 679,700 ****
# define __glibcpp_wchar_t_is_modulo true
#endif
#if __glibcpp_wchar_t_is_signed
! # if __glibcpp_wchar_t_bits == 8
# define __glibcpp_wchar_t_min __glibcpp_s8_min
# define __glibcpp_wchar_t_max __glibcpp_s8_max
# define __glibcpp_wchar_t_digits __glibcpp_s8_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10
! # elif __glibcpp_wchar_t_bits == 16
# define __glibcpp_wchar_t_min __glibcpp_s16_min
# define __glibcpp_wchar_t_max __glibcpp_s16_max
# define __glibcpp_wchar_t_digits __glibcpp_s16_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10
! # elif __glibcpp_wchar_t_bits == 32
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max
# define __glibcpp_wchar_t_digits __glibcpp_s32_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10
! # elif __glibcpp_wchar_t_bits == 64
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max
# define __glibcpp_wchar_t_digits __glibcpp_s64_digits
--- 655,676 ----
# define __glibcpp_wchar_t_is_modulo true
#endif
#if __glibcpp_wchar_t_is_signed
! # if __WCHAR_BIT__ == 8
# define __glibcpp_wchar_t_min __glibcpp_s8_min
# define __glibcpp_wchar_t_max __glibcpp_s8_max
# define __glibcpp_wchar_t_digits __glibcpp_s8_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10
! # elif __WCHAR_BIT__ == 16
# define __glibcpp_wchar_t_min __glibcpp_s16_min
# define __glibcpp_wchar_t_max __glibcpp_s16_max
# define __glibcpp_wchar_t_digits __glibcpp_s16_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10
! # elif __WCHAR_BIT__ == 32
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max
# define __glibcpp_wchar_t_digits __glibcpp_s32_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10
! # elif __WCHAR_BIT__ == 64
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max
# define __glibcpp_wchar_t_digits __glibcpp_s64_digits
***************
*** 703,724 ****
// You must define these macros in the configuration file.
# endif
#else
! # if __glibcpp_wchar_t_bits == 8
# define __glibcpp_wchar_t_min __glibcpp_u8_min
# define __glibcpp_wchar_t_max __glibcpp_u8_max
# define __glibcpp_wchar_t_digits __glibcpp_u8_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10
! # elif __glibcpp_wchar_t_bits == 16
# define __glibcpp_wchar_t_min __glibcpp_u16_min
# define __glibcpp_wchar_t_max __glibcpp_u16_max
# define __glibcpp_wchar_t_digits __glibcpp_u16_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10
! # elif __glibcpp_wchar_t_bits == 32
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max
# define __glibcpp_wchar_t_digits __glibcpp_u32_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10
! # elif __glibcpp_wchar_t_bits == 64
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max
# define __glibcpp_wchar_t_digits __glibcpp_u64_digits
--- 679,700 ----
// You must define these macros in the configuration file.
# endif
#else
! # if __WCHAR_BIT__ == 8
# define __glibcpp_wchar_t_min __glibcpp_u8_min
# define __glibcpp_wchar_t_max __glibcpp_u8_max
# define __glibcpp_wchar_t_digits __glibcpp_u8_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10
! # elif __WCHAR_BIT__ == 16
# define __glibcpp_wchar_t_min __glibcpp_u16_min
# define __glibcpp_wchar_t_max __glibcpp_u16_max
# define __glibcpp_wchar_t_digits __glibcpp_u16_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10
! # elif __WCHAR_BIT__ == 32
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max
# define __glibcpp_wchar_t_digits __glibcpp_u32_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10
! # elif __WCHAR_BIT__ == 64
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max
# define __glibcpp_wchar_t_digits __glibcpp_u64_digits
***************
*** 731,737 ****
// float
//
! #if __glibcpp_float_bits == 32
# define __glibcpp_float_min __glibcpp_f32_min
# define __glibcpp_float_max __glibcpp_f32_max
# define __glibcpp_float_digits __glibcpp_f32_digits
--- 707,713 ----
// float
//
! #if __FLOAT_BIT__ == 32
# define __glibcpp_float_min __glibcpp_f32_min
# define __glibcpp_float_max __glibcpp_f32_max
# define __glibcpp_float_digits __glibcpp_f32_digits
***************
*** 752,758 ****
# define __glibcpp_float_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_float_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f32_is_iec559
! #elif __glibcpp_float_bits == 64
# define __glibcpp_float_min __glibcpp_f64_min
# define __glibcpp_float_max __glibcpp_f64_max
# define __glibcpp_float_digits __glibcpp_f64_digits
--- 728,734 ----
# define __glibcpp_float_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_float_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f32_is_iec559
! #elif __FLOAT_BIT__ == 64
# define __glibcpp_float_min __glibcpp_f64_min
# define __glibcpp_float_max __glibcpp_f64_max
# define __glibcpp_float_digits __glibcpp_f64_digits
***************
*** 773,779 ****
# define __glibcpp_float_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_float_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f64_is_iec559
! #elif __glibcpp_float_bits == 80
# define __glibcpp_float_min __glibcpp_f80_min
# define __glibcpp_float_max __glibcpp_f80_max
# define __glibcpp_float_digits __glibcpp_f80_digits
--- 749,755 ----
# define __glibcpp_float_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_float_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f64_is_iec559
! #elif __FLOAT_BIT__ == 80
# define __glibcpp_float_min __glibcpp_f80_min
# define __glibcpp_float_max __glibcpp_f80_max
# define __glibcpp_float_digits __glibcpp_f80_digits
***************
*** 850,856 ****
// double
! #if __glibcpp_double_bits == 32
# define __glibcpp_double_min __glibcpp_f32_min
# define __glibcpp_double_max __glibcpp_f32_max
# define __glibcpp_double_digits __glibcpp_f32_digits
--- 826,832 ----
// double
! #if __DOUBLE_BIT__ == 32
# define __glibcpp_double_min __glibcpp_f32_min
# define __glibcpp_double_max __glibcpp_f32_max
# define __glibcpp_double_digits __glibcpp_f32_digits
***************
*** 871,877 ****
# define __glibcpp_double_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f32_is_iec559
! #elif __glibcpp_double_bits == 64
# define __glibcpp_double_min __glibcpp_f64_min
# define __glibcpp_double_max __glibcpp_f64_max
# define __glibcpp_double_digits __glibcpp_f64_digits
--- 847,853 ----
# define __glibcpp_double_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f32_is_iec559
! #elif __DOUBLE_BIT__ == 64
# define __glibcpp_double_min __glibcpp_f64_min
# define __glibcpp_double_max __glibcpp_f64_max
# define __glibcpp_double_digits __glibcpp_f64_digits
***************
*** 892,898 ****
# define __glibcpp_double_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f64_is_iec559
! #elif __glibcpp_double_bits == 80
# define __glibcpp_double_min __glibcpp_f80_min
# define __glibcpp_double_max __glibcpp_f80_max
# define __glibcpp_double_digits __glibcpp_f80_digits
--- 868,874 ----
# define __glibcpp_double_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f64_is_iec559
! #elif __DOUBLE_BIT__ == 80
# define __glibcpp_double_min __glibcpp_f80_min
# define __glibcpp_double_max __glibcpp_f80_max
# define __glibcpp_double_digits __glibcpp_f80_digits
***************
*** 969,975 ****
// long double
! #if __glibcpp_long_double_bits == 32
# define __glibcpp_long_double_min __glibcpp_f32_min
# define __glibcpp_long_double_max __glibcpp_f32_max
# define __glibcpp_long_double_digits __glibcpp_f32_digits
--- 945,951 ----
// long double
! #if __LONG_DOUBLE_BIT__ == 32
# define __glibcpp_long_double_min __glibcpp_f32_min
# define __glibcpp_long_double_max __glibcpp_f32_max
# define __glibcpp_long_double_digits __glibcpp_f32_digits
***************
*** 990,996 ****
# define __glibcpp_long_double_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f32_is_iec559
! #elif __glibcpp_long_double_bits == 64
# define __glibcpp_long_double_min __glibcpp_f64_min
# define __glibcpp_long_double_max __glibcpp_f64_max
# define __glibcpp_long_double_digits __glibcpp_f64_digits
--- 966,972 ----
# define __glibcpp_long_double_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f32_is_iec559
! #elif __LONG_DOUBLE_BIT__ == 64
# define __glibcpp_long_double_min __glibcpp_f64_min
# define __glibcpp_long_double_max __glibcpp_f64_max
# define __glibcpp_long_double_digits __glibcpp_f64_digits
***************
*** 1011,1017 ****
# define __glibcpp_long_double_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f64_is_iec559
! #elif __glibcpp_long_double_bits == 80
# define __glibcpp_long_double_min __glibcpp_f80_min
# define __glibcpp_long_double_max __glibcpp_f80_max
# define __glibcpp_long_double_digits __glibcpp_f80_digits
--- 987,993 ----
# define __glibcpp_long_double_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f64_is_iec559
! #elif __LONG_DOUBLE_BIT__ == 80
# define __glibcpp_long_double_min __glibcpp_f80_min
# define __glibcpp_long_double_max __glibcpp_f80_max
# define __glibcpp_long_double_digits __glibcpp_f80_digits
***************
*** 1032,1038 ****
# define __glibcpp_long_double_has_SNaN __glibcpp_f80_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f80_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f80_is_iec559
! #elif __glibcpp_long_double_bits == 96
# define __glibcpp_long_double_min __glibcpp_f96_min
# define __glibcpp_long_double_max __glibcpp_f96_max
# define __glibcpp_long_double_digits __glibcpp_f96_digits
--- 1008,1014 ----
# define __glibcpp_long_double_has_SNaN __glibcpp_f80_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f80_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f80_is_iec559
! #elif __LONG_DOUBLE_BIT__ == 96
# define __glibcpp_long_double_min __glibcpp_f96_min
# define __glibcpp_long_double_max __glibcpp_f96_max
# define __glibcpp_long_double_digits __glibcpp_f96_digits
***************
*** 1053,1059 ****
# define __glibcpp_long_double_has_SNaN __glibcpp_f96_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f96_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f96_is_iec559
! #elif __glibcpp_long_double_bits == 128
# define __glibcpp_long_double_min __glibcpp_f128_min
# define __glibcpp_long_double_max __glibcpp_f128_max
# define __glibcpp_long_double_digits __glibcpp_f128_digits
--- 1029,1035 ----
# define __glibcpp_long_double_has_SNaN __glibcpp_f96_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f96_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f96_is_iec559
! #elif __LONG_DOUBLE_BIT__ == 128
# define __glibcpp_long_double_min __glibcpp_f128_min
# define __glibcpp_long_double_max __glibcpp_f128_max
# define __glibcpp_long_double_digits __glibcpp_f128_digits
*************** namespace std
*** 1136,1148 ****
// knows about better than we do.) -- Gaby
typedef unsigned char __glibcpp_byte;
#define __glibcpp_word_bits 32
! #if __glibcpp_char_bits == __glibcpp_word_bits
# define __glibcpp_word unsigned char
! #elif __glibcpp_short_bits == __glibcpp_word_bits
# define __glibcpp_word unsigned short
! #elif __glibcpp_int_bits == __glibcpp_word_bits
# define __glibcpp_word unsigned int
! #elif __glibcpp_long_bits == __glibcpp_word_bits
# define __glibcpp_word unsigned long
#endif
--- 1112,1124 ----
// knows about better than we do.) -- Gaby
typedef unsigned char __glibcpp_byte;
#define __glibcpp_word_bits 32
! #if __CHAR_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned char
! #elif __SHRT_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned short
! #elif __INT_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned int
! #elif __LONG_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned long
#endif
*************** namespace std
*** 1150,1156 ****
// point data types. Maybe we could avoid the conditional #defines by
// using the aligned_storage<> extension. -- Gaby
typedef const
! #if __glibcpp_float_bits % __glibcpp_word_bits == 0
__glibcpp_word __float_storage[sizeof (float) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __float_storage[sizeof (float)]
--- 1126,1132 ----
// point data types. Maybe we could avoid the conditional #defines by
// using the aligned_storage<> extension. -- Gaby
typedef const
! #if __FLOAT_BIT__ % __glibcpp_word_bits == 0
__glibcpp_word __float_storage[sizeof (float) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __float_storage[sizeof (float)]
*************** namespace std
*** 1158,1164 ****
__attribute__((__aligned__(__alignof__(float))));
typedef const
! #if __glibcpp_double_bits % __glibcpp_word_bits == 0
__glibcpp_word __double_storage[sizeof (double) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __double_storage[sizeof (double)]
--- 1134,1140 ----
__attribute__((__aligned__(__alignof__(float))));
typedef const
! #if __DOUBLE_BIT__ % __glibcpp_word_bits == 0
__glibcpp_word __double_storage[sizeof (double) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __double_storage[sizeof (double)]
*************** namespace std
*** 1166,1172 ****
__attribute__((__aligned__(__alignof__(double))));
typedef const
! #if __glibcpp_long_double_bits % __glibcpp_word_bits == 0
__glibcpp_word __long_double_storage[sizeof (long double) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __long_double_storage[sizeof (long double)]
--- 1142,1148 ----
__attribute__((__aligned__(__alignof__(double))));
typedef const
! #if __LONG_DOUBLE_BIT__ % __glibcpp_word_bits == 0
__glibcpp_word __long_double_storage[sizeof (long double) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __long_double_storage[sizeof (long double)]
Index: gcc/doc/cpp.texi
===================================================================
RCS file: /cvs/gcc/egcs/gcc/doc/cpp.texi,v
retrieving revision 1.44
diff -p -r1.44 cpp.texi
*** gcc/doc/cpp.texi 27 Aug 2002 10:53:06 -0000 1.44
--- gcc/doc/cpp.texi 28 Aug 2002 21:17:30 -0000
*************** unsigned on the target machine. It exis
*** 1972,1977 ****
--- 1972,1981 ----
file @file{limits.h} to work correctly. You should not use this macro
yourself; instead, refer to the standard macros defined in @file{limits.h}.
+ @item __WCHAR_UNSIGNED__
+ Like @code{__CHAR_UNSIGNED__}, this macro is defined if and only if the
+ data type @code{wchar_t} is unsigned and the front-end is in C++ mode.
+
@item __REGISTER_PREFIX__
This macro expands to a single token (not a string constant) which is
the prefix applied to CPU register names in assembly language for this
*************** typedefs, respectively. They exist to m
*** 2001,2006 ****
--- 2005,2026 ----
@file{stddef.h} and @file{wchar.h} work correctly. You should not use
these macros directly; instead, include the appropriate headers and use
the typedefs.
+
+ @item __CHAR_BIT__
+ @itemx __WCHAR_BIT__
+ @itemx __SHRT_BIT__
+ @itemx __INT_BIT__
+ @itemx __LONG_BIT__
+ @itemx __LONG_LONG_BIT__
+ @itemx __FLOAT_BIT__
+ @itemx __DOUBLE_BIT__
+ @itemx __LONG_DOUBLE_BIT__
+ These macros are defined to the number of bits used in the
+ representation of the data types @code{char}, @code{wchar_t},
+ @code{short}, @code{int}, @code{long}, @code{long long}, @code{float},
+ @code{double} and @code{long double}. They exist to make the standard
+ header given numerical limits work correctly. You should not use
+ these macros directly; instead, include the appropriate headers.
@item __USING_SJLJ_EXCEPTIONS__
This macro is defined, with value 1, if the compiler uses the old