1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
<h1 id="firstHeading" class="firstHeading">C99</h1> <p><b>ISO/IEC 9899:1999</b>, a.k.a. <b>C99</b>, is a previous revision of the C standard.</p>
<h2 id="Obsolete"> Obsolete</h2> <h3 id="Removed"> Removed</h3> <ul>
<li> Implicit <code>int</code> in declarations </li>
<li> Implicit function declarations </li>
</ul> <h3 id="Deprecated"> Deprecated</h3> <ul><li> <code><a href="io/gets" title="c/io/gets">gets()</a></code> </li></ul> <h2 id="New_language_features"> New language features</h2> <ul>
<li> Universal-character-names in <a href="language/identifier" title="c/language/identifier">identifiers</a> </li>
<li> Increased <a href="language/identifier#Translation_limits" title="c/language/identifier">translation limits</a> </li>
<li> <code>//</code> <a href="comment" title="c/comment">comments</a> </li>
<li> <a href="language/restrict" title="c/language/restrict"><code>restrict</code></a> pointers </li>
<li> Enhanced <a href="language/arithmetic_types" title="c/language/arithmetic types">arithmetic types</a> <ul>
<li> <code>_Bool</code> </li>
<li> <code>long long</code> and <code>unsigned long long</code> </li>
<li> Extended integer types </li>
<li> <a href="keyword/_complex" title="c/keyword/ Complex"><code>_Complex</code></a> types (<code>float _Complex</code>, <code>double _Complex</code>, and <code>long double _Complex</code>) </li>
<li> <a href="keyword/_imaginary" title="c/keyword/ Imaginary"><code>_Imaginary</code></a> types (<code>float _Imaginary</code>, <code>double _Imaginary</code>, and <code>long double _Imaginary</code>) </li>
</ul> </li>
<li> Flexible array members </li>
<li> <a href="language/array#Variable-length_arrays" title="c/language/array">Variable-length array</a> (VLA) types and variably-modified (VM) types </li>
<li> Improvements of <span class="t-spar">braced-init-list</span> for <a href="language/array_initialization" title="c/language/array initialization">array</a>, <a href="language/struct_initialization" title="c/language/struct initialization">struct and union</a> types <ul>
<li> Non-constant initializers </li>
<li> Designated initializers </li>
</ul> </li>
<li> Idempotent cvr-qualifiers </li>
<li> Trailing comma in <a href="language/enum" title="c/language/enum"><span class="t-spar">enumerator-list</span></a> </li>
<li> Hexadecimal <a href="language/floating_constant" title="c/language/floating constant">floating constants</a> </li>
<li> <a href="language/compound_literal" title="c/language/compound literal">Compound literals</a> </li>
<li> Floating-point environment </li>
<li> Requiring truncation for divisions of signed integer types </li>
<li> Implicit <code>return 0;</code> in the <a href="language/main_function" title="c/language/main function"><code>main()</code> function</a> </li>
<li> Declarations and statements in mixed order </li>
<li> <span class="t-spar">init-statement</span> in <a href="language/for" title="c/language/for"><code>for</code></a> loops </li>
<li> <a href="language/inline" title="c/language/inline"><code>inline</code></a> functions </li>
<li> Predefined variable <a href="language/function_definition" title="c/language/function definition"><code>__func__</code></a> </li>
<li> Cvr-qualifiers and <code>static</code> in <code>[]</code> within function declarations </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace">Variadic macros</a> </li>
<li> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>_Pragma</code></a> preprocessor operator </li>
<li> Standard pragmas for floating-point evaluation <ul>
<li> <code>STDC</code> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>FENV_ACCESS</code></a> </li>
<li> <code>STDC</code> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>FP_CONTRACT</code></a> </li>
<li> <code>STDC</code> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>CX_LIMITED_RANGE</code></a> </li>
</ul> </li>
</ul> <h3 id="Feature_test_macros_for_optional_features"> Feature test macros for optional features</h3> <ul>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_559__</code></a> <ul><li> Indicates IEEE-754 binary floating-point arithmetic and required math functions are supported. </li></ul> </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_559_COMPLEX__</code></a> <ul><li> Indicates IEEE-754 complex arithmetic and required math functions are supported. </li></ul> </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_HOSTED__</code></a> <ul><li> Indicates that the implementation is <a href="language/conformance" title="c/language/conformance">hosted</a>. </li></ul> </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_ISO_10646__</code></a> <ul><li> Indicates that Unicode is used by the wide literal encodings and expands to the latest supported revision. </li></ul> </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_MB_MIGHT_NEQ_WC__</code></a> <ul><li> Indicates that there are some characters in the basic character set having different code unit values in <a href="language/character_constant" title="c/language/character constant">ordinary and wide literal encodings</a>. </li></ul> </li>
</ul> <h2 id="New_library_features"> New library features</h2> <h3 id="New_headers"> New headers</h3> <ul>
<li> <a href="numeric/complex" title="c/numeric/complex"><code><complex.h></code></a> </li>
<li> <a href="numeric/fenv" title="c/numeric/fenv"><code><fenv.h></code></a> </li>
<li> <a href="types/integer" title="c/types/integer"><code><inttypes.h></code></a> </li>
<li> <a href="types" title="c/types"><code><stdbool.h></code></a> </li>
<li> <a href="types/integer" title="c/types/integer"><code><stdint.h></code></a> </li>
<li> <a href="numeric/tgmath" title="c/numeric/tgmath"><code><tgmath.h></code></a> </li>
</ul> <h3 id="Library_features"> Library features</h3> <ul>
<li> <a href="types/integer" title="c/types/integer">Aliases for integer types</a> <ul>
<li> Integer types with exact width (<code>int<i>N</i>_t</code> and <code>uint<i>N</i>_t</code>) </li>
<li> Fastest integer types with at least given width (<code>int_fast<i>N</i>_t</code> and <code>uint_fast<i>N</i>_t</code>) </li>
<li> Smallest integer types with at least given width (<code>int_least<i>N</i>_t</code> and <code>uint_least<i>N</i>_t</code>) </li>
<li> Integer types capable for cast between object pointers (<code><a href="types/integer" title="c/types/integer">intptr_t</a></code> and <code><a href="types/integer" title="c/types/integer">uintptr_t</a></code>) </li>
<li> Integer types with maximum width (<code><a href="types/integer" title="c/types/integer">intmax_t</a></code> and <code><a href="types/integer" title="c/types/integer">uintmax_t</a></code>) </li>
</ul> </li>
<li> Operations on <code>long long</code> and <code><a href="types/integer" title="c/types/integer">intmax_t</a></code> <ul>
<li> <code><a href="numeric/math/abs" title="c/numeric/math/abs">llabs()</a></code> </li>
<li> <code><a href="numeric/math/abs" title="c/numeric/math/abs">imaxabs()</a></code> </li>
<li> <code><a href="numeric/math/div" title="c/numeric/math/div">lldiv()</a></code> </li>
<li> <code><a href="numeric/math/div" title="c/numeric/math/div">imaxdiv()</a></code> </li>
</ul> </li>
<li> <a href="numeric/fenv" title="c/numeric/fenv">Floating-point environment access</a> </li>
<li> Extended floating-point math functions <ul>
<li> New floating-point math functions </li>
<li> -<code>f</code> and -<code>l</code> variants for existing and new floating-point math functions </li>
<li> <a href="numeric/math/math_errhandling" title="c/numeric/math/math errhandling">Math error handling</a> </li>
</ul> </li>
<li> <a href="numeric/complex" title="c/numeric/complex">Complex functions</a> </li>
<li> <code><a href="program/_exit" title="c/program/ Exit">_Exit()</a></code> </li>
<li> Formatting support for <code>long long</code>, <code>unsigned long long</code>, <code><a href="types/integer" title="c/types/integer">intmax_t</a></code>, and <code><a href="types/integer" title="c/types/integer">uintmax_t</a></code> <ul>
<li> <code><a href="string/byte/atoi" title="c/string/byte/atoi">atoll()</a></code> </li>
<li> <code><a href="string/byte/strtoimax" title="c/string/byte/strtoimax">strtoimax()</a></code> </li>
<li> <code><a href="string/byte/strtol" title="c/string/byte/strtol">strtoll()</a></code> </li>
<li> <code><a href="string/byte/strtoul" title="c/string/byte/strtoul">strtoull</a></code> </li>
<li> <code><a href="string/byte/strtoimax" title="c/string/byte/strtoimax">strtoumax()</a></code> </li>
<li> <code><a href="string/wide/wcstoimax" title="c/string/wide/wcstoimax">wcstoimax()</a></code> </li>
<li> <code><a href="string/wide/wcstol" title="c/string/wide/wcstol">wcstoll()</a></code> </li>
<li> <code><a href="string/wide/wcstoul" title="c/string/wide/wcstoul">wcstoull()</a></code> </li>
<li> <code><a href="string/wide/wcstoimax" title="c/string/wide/wcstoimax">wcstoumax()</a></code> </li>
</ul> </li>
<li> <code><a href="string/byte/isblank" title="c/string/byte/isblank">isblank()</a></code> and <code><a href="string/wide/iswblank" title="c/string/wide/iswblank">iswblank()</a></code> </li>
<li> <code><a href="io/fprintf" title="c/io/fprintf">snprintf()</a></code> and <code><a href="io/vfprintf" title="c/io/vfprintf">vsnprintf()</a></code> </li>
<li> <code><a href="io/vfscanf" title="c/io/vfscanf">vfscanf()</a></code> and <code><a href="io/vfwscanf" title="c/io/vfwscanf">vfwscanf()</a></code> function families </li>
<li> Extensions for <a href="io/fscanf" title="c/io/fscanf"><code>fscanf()</code></a> and <a href="io/fprintf" title="c/io/fprintf"><code>fprintf()</code></a> function families <ul>
<li> <code>ll</code> length modifier for <code>long long</code> and <code>unsigned long long</code> </li>
<li> <code>hh</code> length modifier for <code>signed char</code> and <code>unsigned char</code> </li>
<li> <code>l</code> length modifier for <code>double</code> </li>
<li> <code>z</code> length modifier for <code><a href="types/size_t" title="c/types/size t">size_t</a></code> and its signed version </li>
<li> <code>t</code> length modifier for <code><a href="types/ptrdiff_t" title="c/types/ptrdiff t">ptrdiff_t</a></code> and its unsigned version </li>
<li> <code>j</code> length modifier for <code><a href="types/integer" title="c/types/integer">intmax_t</a></code> and <code><a href="types/integer" title="c/types/integer">uintmax_t</a></code> </li>
<li> <code>a</code> conversion specifier for floating-point types </li>
</ul> </li>
<li> Numeric limit macros for <code>long long</code> and <code>unsigned long long</code> </li>
<li> Numeric limit macros corresponding to existing and new aliases for integer types </li>
<li> <a href="types/integer#Format_macro_constants" title="c/types/integer">Format string macros for integer types</a> </li>
<li> <a href="variadic/va_copy" title="c/variadic/va copy"><code>va_copy</code></a> </li>
<li> <a href="numeric/tgmath" title="c/numeric/tgmath">Type-generic math macros</a> </li>
<li> Floating-point comparison macros </li>
<li> Floating-point classification macros </li>
<li> Compatibility macros for <code>_Bool</code> (<a href="types" title="c/types"><code>bool</code></a>, <a href="types" title="c/types"><code>true</code></a>, and <a href="types" title="c/types"><code>false</code></a>) </li>
</ul> <h2 id="Defect_reports"> Defect reports</h2> <p><a href="https://en.cppreference.com/mwiki/index.php?title=Template:c/language/history/DR99&action=edit&redlink=1" class="new" title="Template:c/language/history/DR99 (page does not exist)">Template:c/language/history/DR99</a></p>
<h2 id="Compiler_support"> Compiler support</h2> <h3 id="C99_core_language_features"> C99 core language features</h3> <table class="wikitable tbody-scroll mw-collapsible t-compiler-support-top"> <tr style="height:15em"> <th>C99 feature<br><br> </th> <th>Paper(s)<br><br> </th> <th> <div>GCC</div> </th> <th> <div>Clang</div> </th> <th> <div>MSVC</div> </th> <th> <div>Apple Clang</div> </th> <th> <div>EDG eccp</div> </th> <th> <div>Intel C++</div> </th> <th> <div>IBM XL C++</div> </th> <th> <div>IBM Open XL C++ for AIX</div> </th> <th> <div>IBM Open XL C++ for z/OS</div> </th> <th> <div>Sun/Oracle C++</div> </th> <th> <div>Embarcadero C++ Builder</div> </th> <th> <div>Cray</div> </th> <th> <div><span title="ex Portland Group/PGI">Nvidia HPC C++ (ex PGI)*</span></div> </th> <th> <div>Nvidia nvcc</div> </th> <th> </th>
</tr> <tr> <td> Universal-character-names in <a href="language/identifier" title="c/language/identifier">identifiers</a> </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">3.1 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Increased <a href="language/identifier#Translation_limits" title="c/language/identifier">translation limits</a> </td> <td> N590 </td> <td class="table-yes">0.9 </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>//</code> <a href="comment" title="c/comment">comments</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n644.htm">N644</a> </td> <td class="table-yes">2.7 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/restrict" title="c/language/restrict"><code>restrict</code></a> pointers </td> <td> N448 </td> <td class="table-yes">2.95 </td> <td class="table-yes">Yes </td> <td class="table-maybe">partial<span title="needs /std:c11 or later">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Enhanced <a href="language/arithmetic_types" title="c/language/arithmetic types">arithmetic types</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n815.htm">N815</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n601.ps">N601</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n620.ps">N620</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n638.ps">N638</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n657.ps">N657</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n694.ps">N694</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n809.ps">N809</a> </td> <td class="table-yes">Yes </td> <td class="table-maybe">partial </td> <td class="table-maybe">Maybe </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Flexible array members </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">3.0 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/array#Variable-length_arrays" title="c/language/array">Variable-length array</a> (VLA) types </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n683.htm">N683</a> </td> <td class="table-yes">0.9 </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Variably-modified (VM) types </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2778.pdf">N2778</a> </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Designated initializers </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n494.pdf">N494</a> </td> <td class="table-yes">3.0 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Non-constant initializers </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">1.21 </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Idempotent cvr-qualifiers </td> <td> N505 </td> <td class="table-yes">3.0 </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Trailing comma in <a href="language/enum" title="c/language/enum"><span class="t-spar">enumerator-list</span></a> </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">0.9 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Hexadecimal <a href="language/floating_constant" title="c/language/floating constant">floating constants</a> </td> <td> N308 </td> <td class="table-yes">2.8 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/compound_literal" title="c/language/compound literal">Compound literals</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n716.htm">N716</a> </td> <td class="table-yes">3.1 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Floating-point environment </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-maybe">partial </td> <td class="table-maybe">partial </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Requiring truncation for divisions of signed integer types </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n617.htm">N617</a> </td> <td class="table-yes">0.9 </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Implicit <code>return 0;</code> in the <a href="language/main_function" title="c/language/main function"><code>main()</code> function</a> </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Declarations and statements in mixed order </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n740.htm">N740</a> </td> <td class="table-yes">3.0 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <span class="t-spar">init-statement</span> in <a href="language/for" title="c/language/for"><code>for</code></a> loops </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/inline" title="c/language/inline"><code>inline</code></a> functions </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n741.htm">N741</a> </td> <td class="table-yes">4.3 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Predefined variable <a href="language/function_definition" title="c/language/function definition"><code>__func__</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n611.ps">N611</a> </td> <td class="table-yes">2.95 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Cvr-qualifiers and <code>static</code> in <code>[]</code> within function declarations </td> <td class="table-na"> <small>N/A</small> </td> <td class="table-yes">3.1 </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/replace" title="c/preprocessor/replace">Variadic macros</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n707.htm">N707</a> </td> <td class="table-yes">2.95 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>_Pragma</code></a> preprocessor operator </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n634.ps">N634</a> </td> <td class="table-yes">3.0 </td> <td class="table-yes">Yes </td> <td class="table-maybe">partial<span title="needs /std:c11 or later">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Standard pragmas for floating-point evaluation </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n631.htm">N631</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n696.ps">N696</a> </td> <td class="table-no"> No </td> <td class="table-no"> No </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr style="height:15em"> <th> <br><br>C99 feature </th> <th> <br><br>Paper(s) </th> <th> <div>GCC</div> </th> <th> <div>Clang</div> </th> <th> <div>MSVC</div> </th> <th> <div>Apple Clang</div> </th> <th> <div>EDG eccp</div> </th> <th> <div>Intel C++</div> </th> <th> <div>IBM XL C++</div> </th> <th> <div>IBM Open XL C++ for AIX</div> </th> <th> <div>IBM Open XL C++ for z/OS</div> </th> <th> <div>Sun/Oracle C++</div> </th> <th> <div>Embarcadero C++ Builder</div> </th> <th> <div>Cray</div> </th> <th> <div><span title="ex Portland Group/PGI">Nvidia HPC C++ (ex PGI)*</span></div> </th> <th> <div>Nvidia nvcc</div> </th>
</tr>
</table> <div class="_attribution">
<p class="_attribution-p">
© cppreference.com<br>Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.<br>
<a href="https://en.cppreference.com/w/c/99" class="_attribution-link">https://en.cppreference.com/w/c/99</a>
</p>
</div>
|