Cesium icon indicating copy to clipboard operation
Cesium copied to clipboard

Drop special treatment of functions with the empty parameter list

Open ForNeVeR opened this issue 3 months ago • 2 comments

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.

ForNeVeR avatar Mar 16 '24 23:03 ForNeVeR