Az int main() és az int main(void) közötti különbség
Az int main() és az int main(void) első pillantásra ugyanúgy néz ki, de a C-ben jelentős különbség van köztük, de a C++-ban mindkettő ugyanaz.
C-ben egy paraméter nélküli függvény tetszőleges számú argumentumot vehet fel. Például egy ‘foo()’ néven deklarált függvény tetszőleges számú argumentumot vehet fel C-ben (a foo(), foo(1), foo(‘A’,1) hívása nem ad hibát).
#include <stdio.h>void foo(){}int main(){ foo(); foo(1); foo(1,'A'); foo(1,'A',"ABC"); printf("ABC\n"); return 0;}
A fenti kód hiba nélkül fut, mert egy paraméter nélküli függvény tetszőleges számú argumentumot vehet fel, de ez nem így van a C++-ban. C++-ban hibát fogunk kapni. Lássuk.
#include <iostream>using namespace std;void foo(){}int main(){ foo(1); cout << "ABC" << endl; return 0;}
A fenti kód futtatása hibát ad, mert a ‘foo’ függvénynek nem adhatunk át semmilyen argumentumot.
A foo(void) használata azonban korlátozza a függvényt, hogy bármilyen argumentumot elfogadjon, és hibát fog dobni. Lássuk.
#include <stdio.h>void foo(void){}int main(){ foo(1); printf("ABC\n"); return 0;}
A fenti kód hibát fog adni, mert a ‘foo(void)’-t használtuk, és ez azt jelenti, hogy nem adhatunk át semmilyen argumentumot a ‘foo’ függvénynek, ahogyan azt a ‘foo()’ esetében tettük.
A foo(void) és a foo() tehát azonos a C++-ban, de nem a C-ben. Ugyanez a helyzet a ‘main’ függvény esetében is. Tehát az előnyben részesített forma az int main(void), ha a main nem vesz fel argumentumot.
Különbség az int main() és void main() és main() között
Mint minden más függvény, a main is egy függvény, de azzal a különleges tulajdonsággal, hogy a program végrehajtása mindig a ‘main’-ból indul. Az ‘int’ és a ‘void’ a visszatérési típusa. Beszéljük meg tehát mindhármat egyenként.
- void main – Az ANSI szabvány nemet mond a ‘void main’-ra, ezért használata helytelennek tekinthető. A ‘void main’ használatáról le kell állni, ha ezt tesszük.
- int main – Az ‘int main’ azt jelenti, hogy a függvényünknek a végrehajtás végén valamilyen egész számot kell visszaadnia, és ezt úgy tesszük, hogy a program végén 0-t adunk vissza. A 0 a “program sikeres végrehajtását” jelzi.
- main – A C89-ben a meg nem határozott visszatérési típus alapértelmezés szerint int. Tehát a main a C89-ben az int main-nak felel meg. A C99-ben azonban ez nem megengedett, ezért int main-t kell használni.
Az előnyben részesített mód tehát az int main.