C++ ban mikor használjuk főtörzsként a void main () -t, és mikor az int main () -t?
Mik a különbség a kettő közül? Láttam olyant is hogy voidon belül pl számértéket várunk vissza,miközben az int is ezt a funkciót tölti be.
Köszi ha valaki elmagyarázza!
void, ha nem alkarsz értéket visszaadni, int ha valami egész számot visszaadsz. Pl. hibakódot.
Ez akkor jó, ha batch fileból hívod, vagy akár másik programból, akkor a visszatérési értékkel adhatsz vissza hibakódot, hibás futás esetén. Ha nincs ilyen szándékod, akkor void.
És nem használhatod főhadnagyként. :D
A szabvány szerint a void main() nem létezik:
"it shall have a declared return type of typeint, but otherwise its typeis implementation-defined. An implementation shall allow both
— (2.1)a function of () returning int and
— (2.2)a function of (int pointer to pointer to char) returning int
as the type ofmain(11.3.5)."
Forrás: Standard for Programming Language C++ ( [link] )
De itt is írnak róla: [link]
Meg itt is: [link]
Egyes fordítók/fejlesztőkörnyezetek megengedik, de nem szabványos.
2: ennek ellenére több void-ot láttam életemben mint intet.
Bár mélyebben most c++-ozok először, egy beágyazott rendszeren. Korábban csak mikrokontrollert programoztam szórakozésból.
Különben a C99 ezt írja róla:
"(5.1.2.2.1) It shall be defined with a return type of int and with no parameters
[...]
or with two parameters
[...]
or in some other implementation-defined manner"
Az utolsó sor miatt szabványos a void main().
"2: ennek ellenére több void-ot láttam életemben mint intet.
Bár mélyebben most c++-ozok először, egy beágyazott rendszeren."
Beágyazott rendszereknél használatos:
"// BUT in embedded programming depending on the µC, this form is also used
void main (void);"
Forrás: [link]
"Dehogynem létezik. a C99 szabvány megengedi"
A C99 szabvány nem C++ szabvány - amiről a kérdező értekezik - hanem C-szabvány. Ne keverjük össze!
De egyébként a C-nyelv 2005-ös munkatervezete így értekezik:
"The function called at program startup is namedmain. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters:
int main(void) { /*...*/ }
or with two parameters (referred to here as argc and argv, though any names may beused, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /*...*/ }
or equivalent; or in some other implementation-defined manner."
Forrás: [link]
vagy itt a 2007-es: [link]
"Az utolsó sor miatt szabványos a void main()."
Nem, nem szabványos. Egész értéket KÖTELES (shall!!!) visszaadnia.
#5 "Különben a C99 ezt írja róla"
Különben a C nem C++, a C99 pedig főleg nincs kihatással a C++ szabványára (C18-at meg sem említem).
Beágyazottnál is int a main, még ha értelme nincs is.
Amúgy meg a C pont telibe szarja, hívhatsz full void függvényt paraméterrel, vagy paramétereset anélkül, max elszáll az egész, de miután az esetek 99%-ban édes mind1, hogy 0, 1 vagy memóriaszemét a main return értéke, így igazából mind1 mit küld vissza.
tl.dr: inteset használd az a szép.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!