• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2011.09/share/doc/arm-arm-none-eabi/html/gcc/
1<html lang="en">
2<head>
3<title>Alternate Keywords - Using the GNU Compiler Collection (GCC)</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Using the GNU Compiler Collection (GCC)">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="C-Extensions.html#C-Extensions" title="C Extensions">
9<link rel="prev" href="Explicit-Reg-Vars.html#Explicit-Reg-Vars" title="Explicit Reg Vars">
10<link rel="next" href="Incomplete-Enums.html#Incomplete-Enums" title="Incomplete Enums">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<!--
13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
152010 Free Software Foundation, Inc.
16
17Permission is granted to copy, distribute and/or modify this document
18under the terms of the GNU Free Documentation License, Version 1.3 or
19any later version published by the Free Software Foundation; with the
20Invariant Sections being ``Funding Free Software'', the Front-Cover
21Texts being (a) (see below), and with the Back-Cover Texts being (b)
22(see below).  A copy of the license is included in the section entitled
23``GNU Free Documentation License''.
24
25(a) The FSF's Front-Cover Text is:
26
27     A GNU Manual
28
29(b) The FSF's Back-Cover Text is:
30
31     You have freedom to copy and modify this GNU Manual, like GNU
32     software.  Copies published by the Free Software Foundation raise
33     funds for GNU development.-->
34<meta http-equiv="Content-Style-Type" content="text/css">
35<style type="text/css"><!--
36  pre.display { font-family:inherit }
37  pre.format  { font-family:inherit }
38  pre.smalldisplay { font-family:inherit; font-size:smaller }
39  pre.smallformat  { font-family:inherit; font-size:smaller }
40  pre.smallexample { font-size:smaller }
41  pre.smalllisp    { font-size:smaller }
42  span.sc    { font-variant:small-caps }
43  span.roman { font-family:serif; font-weight:normal; } 
44  span.sansserif { font-family:sans-serif; font-weight:normal; } 
45--></style>
46<link rel="stylesheet" type="text/css" href="../cs.css">
47</head>
48<body>
49<div class="node">
50<a name="Alternate-Keywords"></a>
51<p>
52Next:&nbsp;<a rel="next" accesskey="n" href="Incomplete-Enums.html#Incomplete-Enums">Incomplete Enums</a>,
53Previous:&nbsp;<a rel="previous" accesskey="p" href="Explicit-Reg-Vars.html#Explicit-Reg-Vars">Explicit Reg Vars</a>,
54Up:&nbsp;<a rel="up" accesskey="u" href="C-Extensions.html#C-Extensions">C Extensions</a>
55<hr>
56</div>
57
58<h3 class="section">6.45 Alternate Keywords</h3>
59
60<p><a name="index-alternate-keywords-2695"></a><a name="index-keywords_002c-alternate-2696"></a>
61<samp><span class="option">-ansi</span></samp> and the various <samp><span class="option">-std</span></samp> options disable certain
62keywords.  This causes trouble when you want to use GNU C extensions, or
63a general-purpose header file that should be usable by all programs,
64including ISO C programs.  The keywords <code>asm</code>, <code>typeof</code> and
65<code>inline</code> are not available in programs compiled with
66<samp><span class="option">-ansi</span></samp> or <samp><span class="option">-std</span></samp> (although <code>inline</code> can be used in a
67program compiled with <samp><span class="option">-std=c99</span></samp> or <samp><span class="option">-std=c1x</span></samp>).  The
68ISO C99 keyword
69<code>restrict</code> is only available when <samp><span class="option">-std=gnu99</span></samp> (which will
70eventually be the default) or <samp><span class="option">-std=c99</span></samp> (or the equivalent
71<samp><span class="option">-std=iso9899:1999</span></samp>), or an option for a later standard
72version, is used.
73
74 <p>The way to solve these problems is to put &lsquo;<samp><span class="samp">__</span></samp>&rsquo; at the beginning and
75end of each problematical keyword.  For example, use <code>__asm__</code>
76instead of <code>asm</code>, and <code>__inline__</code> instead of <code>inline</code>.
77
78 <p>Other C compilers won't accept these alternative keywords; if you want to
79compile with another compiler, you can define the alternate keywords as
80macros to replace them with the customary keywords.  It looks like this:
81
82<pre class="smallexample">     #ifndef __GNUC__
83     #define __asm__ asm
84     #endif
85</pre>
86 <p><a name="index-g_t_005f_005fextension_005f_005f-2697"></a><a name="index-pedantic-2698"></a><samp><span class="option">-pedantic</span></samp> and other options cause warnings for many GNU C extensions. 
87You can
88prevent such warnings within one expression by writing
89<code>__extension__</code> before the expression.  <code>__extension__</code> has no
90effect aside from this.
91
92 </body></html>
93
94