https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121563
--- Comment #9 from Christopher Bazley <Chris.Bazley at arm dot com> --- Proposed additions to my proposed C standard wording for consideration by WG14: 1) Add another item to the following list of exceptions: 6.7.1 General 4 If an identifier has no linkage, there shall be no more than one declaration of the identifier (in a declarator or type specifier) with the same scope and in the same name space, except that: -- a typedef name can be redefined to denote the same type as it currently does, provided that type is not a variably modified type; -- enumeration constants and tags can be redeclared as specified in x.y.z.w and x.y.z.w, respectively New item: -- a parameter in a parameter forward declaration list shall be redeclared in the parameter type list as specified in x.y.z.w 2) Make the intended constraint against duplicate forward declarations more explicit: - An identifier declared as a parameter in a parameter forward declaration list shall be declared exactly once in the parameter type list. + An identifier declared as a parameter in a parameter forward declaration list shall be declared exactly once in the parameter type list and no more than once in the parameter forward declaration list.