@@ -96,6 +96,18 @@ a work-in-progress.</p>
<code>musttail</code> statement attribute</a> was added to enforce tail calls.</li>
</ul>
+<h3 id="c">C</h3>
+<ul>
+ <li>GCC 15 changes the default language version for C compilation from
+ <a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=gnu17</a>
+ to
+ <a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=gnu23</a>.
+ If your code relies on older versions of the C standard, you will need to
+ either add
+ <a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=</a>
+ to your build flags, or port your code; see <a href="porting_to.html#c23">the porting notes</a>.
+</ul>
+
<h3 id="cxx">C++</h3>
<ul>
@@ -27,7 +27,39 @@ and provide solutions. Let us know if you have suggestions for improvements!
<p>Note: GCC 15 has not been released yet, so this document is
a work-in-progress.</p>
-<!-- <h2 id="c">C language issues</h2> -->
+<h2 id="c">C language issues</h2>
+
+<h3 id="c23">C23 by default</h3>
+<!-- change of default was in commit 55e3bd376b2214e200fa76d12b67ff259b06c212 -->
+
+GCC 15 changes the default language version for C compilation from
+<a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=gnu17</a>
+to
+<a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=gnu23</a>.
+
+If your code relies on older versions of the C standard, you will need to
+either add <a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=</a>
+to your build flags, or port your code.
+
+C23 brings the following changes:
+
+<h4 id="c23-empty-fn-prototypes-become-void">Function prototypes with empty params change from implicit <code>int</code> to <code>void</code></h4>
+
+<p> In C23 <code>()</code> in a function declaration means the same as <code>(void)</code>, whereas previously it implicitly declared the function to take an <code>int</code> parameter.</p>
+
+<p>Hence
+
+<code>extern int foo();</code>
+
+now means
+
+<code>extern int foo(void);</code>
+
+rather than
+
+<code>extern int foo(int);</code>
+
+<p>Code relying on an implicit <code>int</code> param declaration can be fixed for C23 by adding an explicit <code>int</code> to the function prototype, or you can use <a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1">-std=</a> to select an earlier version of the C standard.</p>
<h2 id="cxx">C++ language issues</h2>