Mercurial > hg > CbC > CbC_gcc
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 |