The intent of the C Standard was to permit only two declarations for main:
int main(void) int main(int, char **)
Other declarations often work, by accident or by extension, but they are not portable.