comparison gcc/doc/cpp.texi @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents a06113de4d67
children b7f97abdc517
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
9 @include gcc-common.texi 9 @include gcc-common.texi
10 10
11 @copying 11 @copying
12 @c man begin COPYRIGHT 12 @c man begin COPYRIGHT
13 Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 13 Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
14 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 14 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
15 2008, 2009
15 Free Software Foundation, Inc. 16 Free Software Foundation, Inc.
16 17
17 Permission is granted to copy, distribute and/or modify this document 18 Permission is granted to copy, distribute and/or modify this document
18 under the terms of the GNU Free Documentation License, Version 1.2 or 19 under the terms of the GNU Free Documentation License, Version 1.2 or
19 any later version published by the Free Software Foundation. A copy of 20 any later version published by the Free Software Foundation. A copy of
1933 in the near future. 1934 in the near future.
1934 1935
1935 @item __OBJC__ 1936 @item __OBJC__
1936 This macro is defined, with value 1, when the Objective-C compiler is in 1937 This macro is defined, with value 1, when the Objective-C compiler is in
1937 use. You can use @code{__OBJC__} to test whether a header is compiled 1938 use. You can use @code{__OBJC__} to test whether a header is compiled
1938 by a C compiler or a Objective-C compiler. 1939 by a C compiler or an Objective-C compiler.
1939 1940
1940 @item __ASSEMBLER__ 1941 @item __ASSEMBLER__
1941 This macro is defined with value 1 when preprocessing assembly 1942 This macro is defined with value 1 when preprocessing assembly
1942 language. 1943 language.
1943 1944
2115 @itemx __PTRDIFF_TYPE__ 2116 @itemx __PTRDIFF_TYPE__
2116 @itemx __WCHAR_TYPE__ 2117 @itemx __WCHAR_TYPE__
2117 @itemx __WINT_TYPE__ 2118 @itemx __WINT_TYPE__
2118 @itemx __INTMAX_TYPE__ 2119 @itemx __INTMAX_TYPE__
2119 @itemx __UINTMAX_TYPE__ 2120 @itemx __UINTMAX_TYPE__
2121 @itemx __SIG_ATOMIC_TYPE__
2122 @itemx __INT8_TYPE__
2123 @itemx __INT16_TYPE__
2124 @itemx __INT32_TYPE__
2125 @itemx __INT64_TYPE__
2126 @itemx __UINT8_TYPE__
2127 @itemx __UINT16_TYPE__
2128 @itemx __UINT32_TYPE__
2129 @itemx __UINT64_TYPE__
2130 @itemx __INT_LEAST8_TYPE__
2131 @itemx __INT_LEAST16_TYPE__
2132 @itemx __INT_LEAST32_TYPE__
2133 @itemx __INT_LEAST64_TYPE__
2134 @itemx __UINT_LEAST8_TYPE__
2135 @itemx __UINT_LEAST16_TYPE__
2136 @itemx __UINT_LEAST32_TYPE__
2137 @itemx __UINT_LEAST64_TYPE__
2138 @itemx __INT_FAST8_TYPE__
2139 @itemx __INT_FAST16_TYPE__
2140 @itemx __INT_FAST32_TYPE__
2141 @itemx __INT_FAST64_TYPE__
2142 @itemx __UINT_FAST8_TYPE__
2143 @itemx __UINT_FAST16_TYPE__
2144 @itemx __UINT_FAST32_TYPE__
2145 @itemx __UINT_FAST64_TYPE__
2146 @itemx __INTPTR_TYPE__
2147 @itemx __UINTPTR_TYPE__
2120 These macros are defined to the correct underlying types for the 2148 These macros are defined to the correct underlying types for the
2121 @code{size_t}, @code{ptrdiff_t}, @code{wchar_t}, @code{wint_t}, 2149 @code{size_t}, @code{ptrdiff_t}, @code{wchar_t}, @code{wint_t},
2122 @code{intmax_t}, and @code{uintmax_t} 2150 @code{intmax_t}, @code{uintmax_t}, @code{sig_atomic_t}, @code{int8_t},
2123 typedefs, respectively. They exist to make the standard header files 2151 @code{int16_t}, @code{int32_t}, @code{int64_t}, @code{uint8_t},
2124 @file{stddef.h} and @file{wchar.h} work correctly. You should not use 2152 @code{uint16_t}, @code{uint32_t}, @code{uint64_t},
2125 these macros directly; instead, include the appropriate headers and use 2153 @code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t},
2126 the typedefs. 2154 @code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t},
2155 @code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t},
2156 @code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t},
2157 @code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t},
2158 @code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t} typedefs,
2159 respectively. They exist to make the standard header files
2160 @file{stddef.h}, @file{stdint.h}, and @file{wchar.h} work correctly.
2161 You should not use these macros directly; instead, include the
2162 appropriate headers and use the typedefs. Some of these macros may
2163 not be defined on particular systems if GCC does not provide a
2164 @file{stdint.h} header on those systems.
2127 2165
2128 @item __CHAR_BIT__ 2166 @item __CHAR_BIT__
2129 Defined to the number of bits used in the representation of the 2167 Defined to the number of bits used in the representation of the
2130 @code{char} data type. It exists to make the standard header given 2168 @code{char} data type. It exists to make the standard header given
2131 numerical limits work correctly. You should not use 2169 numerical limits work correctly. You should not use
2135 @itemx __WCHAR_MAX__ 2173 @itemx __WCHAR_MAX__
2136 @itemx __SHRT_MAX__ 2174 @itemx __SHRT_MAX__
2137 @itemx __INT_MAX__ 2175 @itemx __INT_MAX__
2138 @itemx __LONG_MAX__ 2176 @itemx __LONG_MAX__
2139 @itemx __LONG_LONG_MAX__ 2177 @itemx __LONG_LONG_MAX__
2178 @itemx __WINT_MAX__
2179 @itemx __SIZE_MAX__
2180 @itemx __PTRDIFF_MAX__
2140 @itemx __INTMAX_MAX__ 2181 @itemx __INTMAX_MAX__
2182 @itemx __UINTMAX_MAX__
2183 @itemx __SIG_ATOMIC_MAX__
2184 @itemx __INT8_MAX__
2185 @itemx __INT16_MAX__
2186 @itemx __INT32_MAX__
2187 @itemx __INT64_MAX__
2188 @itemx __UINT8_MAX__
2189 @itemx __UINT16_MAX__
2190 @itemx __UINT32_MAX__
2191 @itemx __UINT64_MAX__
2192 @itemx __INT_LEAST8_MAX__
2193 @itemx __INT_LEAST16_MAX__
2194 @itemx __INT_LEAST32_MAX__
2195 @itemx __INT_LEAST64_MAX__
2196 @itemx __UINT_LEAST8_MAX__
2197 @itemx __UINT_LEAST16_MAX__
2198 @itemx __UINT_LEAST32_MAX__
2199 @itemx __UINT_LEAST64_MAX__
2200 @itemx __INT_FAST8_MAX__
2201 @itemx __INT_FAST16_MAX__
2202 @itemx __INT_FAST32_MAX__
2203 @itemx __INT_FAST64_MAX__
2204 @itemx __UINT_FAST8_MAX__
2205 @itemx __UINT_FAST16_MAX__
2206 @itemx __UINT_FAST32_MAX__
2207 @itemx __UINT_FAST64_MAX__
2208 @itemx __INTPTR_MAX__
2209 @itemx __UINTPTR_MAX__
2210 @itemx __WCHAR_MIN__
2211 @itemx __WINT_MIN__
2212 @itemx __SIG_ATOMIC_MIN__
2141 Defined to the maximum value of the @code{signed char}, @code{wchar_t}, 2213 Defined to the maximum value of the @code{signed char}, @code{wchar_t},
2142 @code{signed short}, 2214 @code{signed short},
2143 @code{signed int}, @code{signed long}, @code{signed long long}, and 2215 @code{signed int}, @code{signed long}, @code{signed long long},
2144 @code{intmax_t} types 2216 @code{wint_t}, @code{size_t}, @code{ptrdiff_t},
2145 respectively. They exist to make the standard header given numerical limits 2217 @code{intmax_t}, @code{uintmax_t}, @code{sig_atomic_t}, @code{int8_t},
2146 work correctly. You should not use these macros directly; instead, include 2218 @code{int16_t}, @code{int32_t}, @code{int64_t}, @code{uint8_t},
2147 the appropriate headers. 2219 @code{uint16_t}, @code{uint32_t}, @code{uint64_t},
2220 @code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t},
2221 @code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t},
2222 @code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t},
2223 @code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t},
2224 @code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t},
2225 @code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t} types and
2226 to the minimum value of the @code{wchar_t}, @code{wint_t}, and
2227 @code{sig_atomic_t} types respectively. They exist to make the
2228 standard header given numerical limits work correctly. You should not
2229 use these macros directly; instead, include the appropriate headers.
2230 Some of these macros may not be defined on particular systems if GCC
2231 does not provide a @file{stdint.h} header on those systems.
2232
2233 @item __INT8_C
2234 @itemx __INT16_C
2235 @itemx __INT32_C
2236 @itemx __INT64_C
2237 @itemx __UINT8_C
2238 @itemx __UINT16_C
2239 @itemx __UINT32_C
2240 @itemx __UINT64_C
2241 @itemx __INTMAX_C
2242 @itemx __UINTMAX_C
2243 Defined to implementations of the standard @file{stdint.h} macros with
2244 the same names without the leading @code{__}. They exist the make the
2245 implementation of that header work correctly. You should not use
2246 these macros directly; instead, include the appropriate headers. Some
2247 of these macros may not be defined on particular systems if GCC does
2248 not provide a @file{stdint.h} header on those systems.
2148 2249
2149 @item __SIZEOF_INT__ 2250 @item __SIZEOF_INT__
2150 @itemx __SIZEOF_LONG__ 2251 @itemx __SIZEOF_LONG__
2151 @itemx __SIZEOF_LONG_LONG__ 2252 @itemx __SIZEOF_LONG_LONG__
2152 @itemx __SIZEOF_SHORT__ 2253 @itemx __SIZEOF_SHORT__
3438 3539
3439 This manual documents the pragmas which are meaningful to the 3540 This manual documents the pragmas which are meaningful to the
3440 preprocessor itself. Other pragmas are meaningful to the C or C++ 3541 preprocessor itself. Other pragmas are meaningful to the C or C++
3441 compilers. They are documented in the GCC manual. 3542 compilers. They are documented in the GCC manual.
3442 3543
3544 GCC plugins may provide their own pragmas.
3545
3443 @ftable @code 3546 @ftable @code
3444 @item #pragma GCC dependency 3547 @item #pragma GCC dependency
3445 @code{#pragma GCC dependency} allows you to check the relative dates of 3548 @code{#pragma GCC dependency} allows you to check the relative dates of
3446 the current file and another file. If the other file is more recent than 3549 the current file and another file. If the other file is more recent than
3447 the current file, a warning is issued. This is useful if the current 3550 the current file, a warning is issued. This is useful if the current
3505 @samp{#sccs} directive is a synonym for @samp{#ident}. 3608 @samp{#sccs} directive is a synonym for @samp{#ident}.
3506 3609
3507 These directives are not part of the C standard, but they are not 3610 These directives are not part of the C standard, but they are not
3508 official GNU extensions either. What historical information we have 3611 official GNU extensions either. What historical information we have
3509 been able to find, suggests they originated with System V@. 3612 been able to find, suggests they originated with System V@.
3510
3511 Both @samp{#ident} and @samp{#sccs} are deprecated extensions.
3512 3613
3513 @cindex null directive 3614 @cindex null directive
3514 The @dfn{null directive} consists of a @samp{#} followed by a newline, 3615 The @dfn{null directive} consists of a @samp{#} followed by a newline,
3515 with only whitespace (including comments) in between. A null directive 3616 with only whitespace (including comments) in between. A null directive
3516 is understood as a preprocessing directive but has no effect on the 3617 is understood as a preprocessing directive but has no effect on the
3939 4040
3940 The preprocessor and compiler interpret character constants in the 4041 The preprocessor and compiler interpret character constants in the
3941 same way; i.e.@: escape sequences such as @samp{\a} are given the 4042 same way; i.e.@: escape sequences such as @samp{\a} are given the
3942 values they would have on the target machine. 4043 values they would have on the target machine.
3943 4044
3944 The compiler values a multi-character character constant a character 4045 The compiler evaluates a multi-character character constant a character
3945 at a time, shifting the previous value left by the number of bits per 4046 at a time, shifting the previous value left by the number of bits per
3946 target character, and then or-ing in the bit-pattern of the new 4047 target character, and then or-ing in the bit-pattern of the new
3947 character truncated to the width of a target character. The final 4048 character truncated to the width of a target character. The final
3948 bit-pattern is given type @code{int}, and is therefore signed, 4049 bit-pattern is given type @code{int}, and is therefore signed,
3949 regardless of whether single characters are signed or not (a slight 4050 regardless of whether single characters are signed or not (a slight