Avatar billede ozman Nybegynder
18. november 2004 - 12:29 Der er 18 kommentarer og
2 løsninger

int main(void) vs main()

Jeg er lige begyndt på C og har et "hello world" programmet programmeret med både ind main(void) og bare main().
Er der forskel og i så fald hvad?
Avatar billede ozman Nybegynder
18. november 2004 - 12:29 #1
der skulle selvfølgelig stå INT main(void), ikke ind main(void)
Avatar billede arne_v Ekspert
18. november 2004 - 12:32 #2
int main()

eller

int main(int argc, char *argv[])

må være de mest korrekte.
Avatar billede arne_v Ekspert
18. november 2004 - 12:33 #3
main()

virker i C fordi default retur type er int.

Men jeg mener at du får syntax fejl i C++.

Og i C vil jeg kalde det sjusket ikke at angive det eksplicit.
Avatar billede arne_v Ekspert
18. november 2004 - 12:34 #4
int main(void)

er helt fint, men det generer min æstetiske sans at angive ingen argumenter, når
der rent faktisk er argumenter
Avatar billede arne_v Ekspert
18. november 2004 - 12:35 #5
void main()

er derimod rigtigt slemt
Avatar billede ozman Nybegynder
18. november 2004 - 12:36 #6
Men hvorfor skal man så også skrive "int" hvis det er en void og ikke skal retunere noget?
Avatar billede Slettet bruger
18. november 2004 - 12:36 #7
når du skriver main (void ) så giver du main et value der hedder 0
i forhold til hvis du skriver int main() så når du afslutter dit programmer slutter du med at skrive at return value skal være 0 ... forskellige efter min efaring ( også newbie ) ;P er at int main() virker til næsten alle compilere ... men main (void) kan give syntax error i det nye compilier ...
Avatar billede ozman Nybegynder
18. november 2004 - 12:39 #8
jeg synes bare at det er tosset at først erklære at den skal retunere en int, derefter ikke retunere noget for til sidst at retunere "0".
Ville det ikke være lettere at bare skrive main(void)?? - men hvis det er god skik at gøre det andet vil jeg selvfølgelig også gøre det:-)
Avatar billede arne_v Ekspert
18. november 2004 - 12:40 #9
main er ikke en void funktion. main returnerer en int.

retur værdien fra main kan bruges i det environment hvor programmet er startet
fra - f.eks. kan man i en BAT fil kører et program og teste på retur værdien -
det er derfor void main er så slemt

[der er visse undtagelser med embdded applikationer o.lign.]
Avatar billede Slettet bruger
18. november 2004 - 12:42 #10
main(void) er rent faktisk ikke C++ , men mere C programmering .. der er nogen internationale standarder ... og jeg vil råd dig til at bruge int main isted of main(void)
Avatar billede arne_v Ekspert
18. november 2004 - 12:43 #11
Jeg tro at du blander de 2 void sammen.

int main(void) = ingen argumenter, returner int
int main(int argc, char *argv[]) = 2 argumenter, returnerer int
void main(void) = ingen argumenter, returner ingenting
void main(int argc, char *argv[]) = 2 argumenter, returnerer ingenting

de to sidste er efter min mening meget forkerte

den første er OK men jeg ville bare aldrig selv skrive det
Avatar billede arne_v Ekspert
18. november 2004 - 12:43 #12
int main()

og

int main(int argc, char *argv[])

går du ikke galt i byen med
Avatar billede Slettet bruger
18. november 2004 - 12:44 #13
Avatar billede Slettet bruger
18. november 2004 - 12:45 #14
http://homepages.tesco.net/~J.deBoynePollard/FGA/legality-of-void-main.html

læs disse to artikeler .. så vil du få et bedre overblik
Avatar billede ozman Nybegynder
18. november 2004 - 12:49 #15
hmm, ja det kan godt være at jeg blander det lidt sammen.
Avatar billede arne_v Ekspert
18. november 2004 - 12:52 #16
det er meget vigtigt at:

foobar()
{
}

er legal C og svarer til:

int foobar()
{
}

og altså ikke til:

void foobar()
{
}

[og det er ikke legal C++]
Avatar billede ozman Nybegynder
18. november 2004 - 12:56 #17
Jamen så er der jo ikke andet for end at gøre det på den måde:-)
Avatar billede Slettet bruger
18. november 2004 - 14:52 #18
Hvis arne_v ikke vil have points.. så er du velkommen til at give mig :)
Avatar billede arne_v Ekspert
18. november 2004 - 15:30 #19
did not say so
Avatar billede bertelbrander Novice
18. november 2004 - 20:12 #20
I C (Ansi C89) (men ikke C++, eller C99) er der forkel på:

int func();
og
int func(void);

Det første er en "prototype" på en funktion der tager nogle uspecificerede argumenter, det sidste er en prototype på en funktion der ikke tager nogen argumenter.

Derfor bruger jeg int main(void) til C og int main() til C++.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester