Cesium
Cesium copied to clipboard
Drop special treatment of functions with the empty parameter list
C23 has dropped the requirement of special treatment for the functions with empty parameter list, such as:
void foo();
In previous versions of the standard, this would introduce a function declaration with a lax parameter list, meaning the caller can call it while passing any parameters.
In C23, this is no longer the case, and declarations such as void foo();
and void foo(void);
are strictly identical: they declare a function with no parameters.
For a summary of changes, see Annex M, M.2 Fifth Edition:
Major changes in this fifth edition (
__STDC_VERSION__ 202311L
) include:
- …
- mandated function declarations whose parameter list is empty be treated the same as a parameter list which only contain a single
void
;
See also proposal N2841 that's been accepted.
This unfortunate behavior has been causing a fair amount of pain for implementing the previous standard versions in Cesium, so I am glad we could finally drop it.
I would say we need a switch to support old scenario.
I'd say it already costs us a lot of resources in proper support.
Maybe we can implement some easy workaround instead, like ignoring the argument lists for these functions completely (with a switch).