Quote Originally Posted by Mario F.
The void argument isn't really required
In theory, the void parameter may be required by some later version of the C standard since:
Quote Originally Posted by C11
6.11.6 Function declarators

The use of function declarators with empty parentheses (not prototype-format parameter type declarators) is an obsolescent feature.

6.11.7 Function definitions

The use of function definitions with separate parameter identifier and declaration lists (not prototype-format parameter type and identifier declarators) is an obsolescent feature.
My reasoning is that the void parameter would fall under "prototype-format parameter type declarators", whereas an empty parameter list would actually be an empty identifier list, and hence is obsolescent under 6.11.7. In practice I think they will retain this status for a long while since there's some convenience for allowing what C++ allows (and in fact typically C++ programmers prefer not to use void) to cater to programs intended to be compiled as C and C++ as the case may be.