https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117664
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|UNCONFIRMED |RESOLVED
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Jürgen Reuter from comment #2)
> Is that backward compatible with standards like e.g. C11?
This was an active decision by the standards to break backwards compatibility
here with respect to supporting non-protypes declarations
`void f(void)` is backwards compatible with all versions of C.
You can compile with -std=gnu17 specifically to get the old C90/C94/C99/C11/C17
behavior.
In this case:
```
extern int xdr_stdhep_();
extern int xdr_stdhep_multi_();
extern int xdr_stdhep_4_();
extern int xdr_stdhep_4_multi_();
extern int xdr_stdhep_cm1_();
extern int xdr_hepeup_();
extern int xdr_heprup_();
```
If you want to be forwards compatiable with C23 (and it will be backwards
compatible with C90 even), you have to add all of the argument types; otherwise
in C23 it is the same as doing `(void)`.