https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121563
--- Comment #2 from Alejandro Colomar <foss+...@alejandro-colomar.es> --- (In reply to Jakub Jelinek from comment #1) > I don't see any inconsistency or problem. > In the f1 case, you are forward declaring the same parameter twice (no > problem) and then declaring it. > In the f2 case, you are declaring y, then forward declaring another y and > declaring another y. That is the same error as if you do void f2a (int y, > int y);. I don't think so. According to GCC's documentation, everything up-to the last ';' is a forward declaration. | They can be separated by commas or semicolons, | but the last one must end with a semicolon, | which is followed by the “real” parameter declarations. <https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html>