You have forgotten that the void in the parameter list is only necessary for specifying that the function takes no arguments when declaring the function (prototype), not when defining the function. If you claim that C99 does not allow one to leave out the void, then I claim that the C99 standard is inconsistent:
Well C99 makes it pretty clear that the above definition would fall into "other"... if it was even a valid function signature, which it isn't... when will people learn: int main(void)
The above program is an example from ISO/IEC 9899:1999 Section 188.8.131.52. If what you say is true, then this is yet another defect in C99, and one that is repeated in the text of the Standard.
size = fsize3(10); // fsize3 returns 13
But of course, even if the void was required, if the author of that article is correct, then I do not see why int main() should not fall under "other", and just be not portable, as cpjust pointed out.