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)`.