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: <a rel="next" accesskey="n" href="Incomplete-Enums.html#Incomplete-Enums">Incomplete Enums</a>, 53Previous: <a rel="previous" accesskey="p" href="Explicit-Reg-Vars.html#Explicit-Reg-Vars">Explicit Reg Vars</a>, 54Up: <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 ‘<samp><span class="samp">__</span></samp>’ 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