One thing about C is that its definition of the main function has become fudged over time.
Originally, main was defined thus:
main()
As time went on, C got a bit stricter with its function definitions and main, which technically returns an integer was redefined to explicitly show this
int main(void) - used when no start parameters are used, or
int main(int argc, char** argv) - used when you want to access whatever was passed on the command line.
To remain compatible, a lot of implementations still allow the original old definition.
The best advice. Use an up do date C compiler and use explicit integer return type definition of main (ie either of the second two above).