What does the following mean :
int main(void) {...}
VS
int main() {...}
?
I think that int main() {...} means that main doesn’t receive any parameters (from command line) , however:
int main(int argc, char *argv[])
does.
But, what does int main(void) {...} mean? And, what does void stand for ?
I’ve looked here but it’s somehow a different question .
In C++, there is no difference.
In C, the difference is questionable. Some love to argue that the latter version (the one without
void) is technically just a common implementation extension and not guaranteed to work by the standard because of the wording in the standard. However, the standard clearly states that in a function definition an empty set of parameters has a well-defined behaviour: that the function does not take any parameters. Thus such a definition for main matches the following description in the standard:There is, however, a noticeable difference between the two: namely, the version without
voidfails to provide a correct prototype for the function:Oh, and just to be complete: the
voidhas the following meaning in all function declarators: