Het verschil tussen int main() en int main(void)
Zowel int main() als int main(void) zien er op het eerste gezicht misschien hetzelfde uit, maar er is een belangrijk verschil tussen de twee in C, maar beide zijn hetzelfde in C++.
In C kan een functie zonder parameter een willekeurig aantal argumenten aannemen. Bijvoorbeeld, een functie gedeclareerd als ‘foo()’ kan in C een willekeurig aantal argumenten aannemen (het aanroepen van foo(), foo(1), foo(‘A’,1) zal geen fout geven).
#include <stdio.h>void foo(){}int main(){ foo(); foo(1); foo(1,'A'); foo(1,'A',"ABC"); printf("ABC\n"); return 0;}
De bovenstaande code loopt prima zonder enige fout te geven omdat een functie zonder enige parameter een willekeurig aantal argumenten kan aannemen, maar dit is niet het geval in C++. In C++ zullen we een fout krijgen.
#include <iostream>using namespace std;void foo(){}int main(){ foo(1); cout << "ABC" << endl; return 0;}
Het uitvoeren van de bovenstaande code zal ons een fout geven omdat we geen enkel argument kunnen doorgeven aan de functie ‘foo’.
Hoewel, het gebruik van foo(void) beperkt de functie om elk argument te nemen en zal een fout geven.
#include <stdio.h>void foo(void){}int main(){ foo(1); printf("ABC\n"); return 0;}
De bovenstaande code zal ons een fout geven omdat we ‘foo(void)’ hebben gebruikt en dit betekent dat we geen enkel argument kunnen doorgeven aan de functie ‘foo’ zoals we deden in het geval van ‘foo()’.
Dus, zowel foo(void) als foo() zijn hetzelfde in C++ maar niet in C. Hetzelfde is ook het geval met de ‘main’ functie. Dus, de voorkeursvorm om te gebruiken is int main(void) als main geen enkel argument neemt.
Verschil tussen int main() en void main() en main()
Zoals elke andere functie, is main ook een functie, maar met de speciale eigenschap dat de programma-uitvoering altijd start vanuit de ‘main’. “int” en “void” zijn de return types. Laten we ze dus alle drie een voor een bespreken.
- void main – De ANSI standaard zegt “nee” tegen de “void main” en dus kan het gebruik ervan als verkeerd worden beschouwd. Men moet stoppen met het gebruik van de ‘void main’ als men dat doet.
- int main – ‘int main’ betekent dat onze functie een integer moet teruggeven aan het eind van de uitvoering en dat doen we door 0 terug te geven aan het eind van het programma. 0 is de standaard voor de “succesvolle uitvoering van het programma”.
- main – In C89 wordt het niet gespecificeerde terugkeertype standaard op int gezet. Dus, main is gelijkwaardig aan int main in C89. Maar in C99 is dit niet toegestaan en moet men dus int main gebruiken.
Dus, de voorkeur gaat uit naar int main.