Hur skrivs en korrekt main-funktion?

Fråga: Main-funktion i min lärobok skrivs inte som i kurssidorna. Vilket är är det rätta?

Svaret på frågan finner man i standardiseringen av C++. Där anges...

All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }

Observera att alla producenter av C++ kompilatorer skall se till att ovanstående två varianter av main-funktioner stöds. Ytterligare en specifikation anges, nämnligen...

It shall have a return type of type int..

Detta innebär alltså att void main() INTE hör till C++ standardisering eftersom returvärdet alltid ska vara av typen int.

Förr var det inte strikt angivet hur en main-funktion skulle vara utformad och ofta såg funktionshuvudet ut så här...

void main()

...eller så här...

void main(void)

Fortfarande dyker detta upp, inte minst i läroböcker som är skrivna för några år sedan eller nyskrivna av författare som inte hängt med med eller inte bryr sig om standardiseringen.

Kompilatorerna är vanligtvis snälla och accepterar en mängd varianter av main-funktioner, så när det gäller att skapa fungerande program spelar det ingen roll hur du skriver. Personligen tycker jag att man alltid ska försöka hålla sig till standardiseringen när så är möjligt. Det är därför som alla exempel i denna kurs har en main-funktion av typen int main().