core/com.nokia.carbide.cpp.compiler.doc.user/html/pragmas/p_gcc_extensions.htm
author stechong
Wed, 20 Oct 2010 11:19:31 -0500
changeset 2165 2a7b5eccb0bc
parent 1641 2b3996fc09a1
permissions -rw-r--r--
Keeping PlatSim internal only.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1641
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     3
  <head>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     4
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     5
    <meta http-equiv="Content-Style-Type" content="text/css" />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     6
    <meta name="LASTUPDATED" content="06/17/05 11:09:43" />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     7
    <title>access_errors</title>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     8
	<link rel="StyleSheet" href="../../book.css" type="text/css"/>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
     9
  </head>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    10
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    11
<body>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    12
<h3>gcc_extensions</h3>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    13
<p>Controls the acceptance of GNU C language extensions.  </p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    14
<h5>Syntax</h5>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    15
  <p class="code">#pragma gcc_extensions on | off | reset
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    16
  </p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    17
  <h5>Targets</h5>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    18
  All platforms.<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    19
  <h5>Remarks</h5>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    20
  <p>If you enable this pragma, the compiler accepts GNU C extensions in C source code. This includes the following non-ANSI C extensions:</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    21
  <ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    22
    <li>Initialization of automatic struct or array variables with non-const values</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    23
  </ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    24
  <blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    25
    <p class="listing"> int foo(int arg)<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    26
      {<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    27
      int arr[2] = { arg, arg+1 };<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    28
  }</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    29
  </blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    30
  <ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    31
    <li class="code">sizeof( void ) == 1</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    32
    <li class="code">sizeof( function-type ) == 1</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    33
    <li>Limited support for GCC statements and declarations within expressions</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    34
  </ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    35
  <blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    36
    <p class="listing">pragma gcc_extensions on<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    37
      #define POW2(n) ({ int i,r; for(r=1,i=n; i&gt;0; --i) r&lt;&lt;=1; r;})</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    38
    <p>This feature only works for expressions in function bodies and does not support code that requires any form of C++ exception handling (for example, throwing or catching exceptions or creating local or temporary class objects that require a destructor call).</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    39
    <p class="listing">int main()<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    40
    {<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    41
    return POW2(4);<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    42
    }</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    43
  </blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    44
  <ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    45
    <li>Macro redefinitions without a previous #undef.</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    46
    <li>The GCC keyword <span class="code">typeof</span>. See &ldquo;The __typeof__() and typeof() operators&rdquo;, &ldquo;Initialization of Local Arrays and Structures&rdquo; for a description of these extensions.</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    47
    <li>Function pointer arithmetic supported</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    48
    <li><span class="code">void*</span> arithmetic supported</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    49
    <li><span class="code">__builtin_constant_p (&lt;expr&gt;)</span> supported</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    50
    <li>Forward declarations of arrays of incomplete type supported</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    51
    <li>Pre-C99 designated initializer syntax (deprecated) supported</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    52
  </ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    53
  <blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    54
    <p class="listing">#pragma gcc_extensions on<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    55
    struct S { int a, b, b; } s = { c:3, b:2, a:1 };</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    56
  </blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    57
  <ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    58
    <li>Conditionals with omitted Operands supported</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    59
  </ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    60
  <blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    61
    <p class="listing"> #pragma gcc_extensions on<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    62
      int x, y, z;<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    63
      x = y ?: z;<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    64
      Outputs:<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    65
      x = y ? y ? z;</p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    66
  </blockquote>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    67
  <ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    68
    <li><span class="code">long __builtin_expect (long exp, long c)</span> now accepted</li>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    69
  </ul>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    70
  <p>This pragma corresponds to the Enable <a href="../pragmas/p_gcc_extensions.htm">GCC Extensions</a> setting . To check the global optimizer, use <span class="code">__option (gcc_extensions)</span>, described in <a href="../symbols/sym_settings.htm">Checking Settings</a>. The default setting is <span class="code">off</span>.<br />
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    71
                    </p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    72
  <p></p>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    73
<div id="footer">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    74
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    75
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    76
</body>
2b3996fc09a1 revised x86 compiler dates, graphics, CSS, and release notes
fturovic <frank.turovich@nokia.com>
parents: 0
diff changeset
    77
</html>