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

Reply via email to