main()

Poslao HCmaniac on 04.08.2008 15:15:16
Ovako, posto sam totalni pocetnik u cpp-u zanima me kada ide int main(), kada void main() i ostale mogucnosti. Gledao sam po netu al svuda pise isto, a ja nista od toga ne kuzim, dal mi moze neko objasniti

Re: main()

Poslao zowey on 04.08.2008 22:28:31
int main() ide kada zelis da ti program vraca cijeli broj
ugl.. to ti je ako se program pravilno izvrsi do kraja u pravilu mora vratiti 0, a ako dodje do neke pogreske mora vratiti 1...

void main() stavljas kad ne zelis da ti glavni program ne vraca nista... to ugl, ako ne pises neki veliki program u kojem bi mozebit trebale biti greske..

Re: main()

Poslao slobodan on 04.08.2008 23:31:26
Ovo nema veze s tim da li je program pisan u C-u ili C++-u ili nekom trećem jeziku, jer je ista stvar neovisno o jeziku.

Svaki pravilan unix program pri završetku rada treba vratiti neku vrijednost okolini koja ga je pokrenula. Stoga, unix programe pišemo sa "int main()". Po dogovorenom standardu, prijašnji unix programi vraćali su 0 ako je sve ok, a od 1 do 127 ako je neka greška (vraćena greška ukazivala je koji je problem, s tim da su neke greške standardizirane), a današnji vraćaju 0 ako je sve ok, a od 1 do 255 ako je neka greška. S tim da kao i u starijoj varijanti, kod greške nešto znači, ako nikome drugome, onda autoru programa.

"void main()" ako se baš radi o nekom jednostavnom programu oko kojega se ne želiš previše zamarati. Samo pazi da te to ne zavara, jer u nekim unix okolinama očekuje se vraćen nekakav rezultat, pa sustav može odjednom izgenerirati nešto svoje. Sa raznoraznim nedefiniranim posljedicama.

AFAIK i drugi non-unix OS-ovi (npr windows) očekuju "int main()" a ne "void main()".

Stoga, "int main()", a tekstove gdje ti preporučaju "void main()" čitaj s dozom opreza i skepticizma, jer je tu nešto možda malo trulo...

Re: main()

Poslao Cracker on 07.08.2008 0:07:08
slobodan ti je dao izuzetno precizno i dobro objasnjenje, ali kao pocetnik ca c/c++ to ti nece nista pretjerano znaciti u zivotu ako napises
void main(){} ili int main{... return 0;} (premda je main po defaultu tipa integer). Postoji bitna razlika izmedju programiranja pod win i linuxom, tako da moras rascistiti gdje radis. Premda, opet naglasavam, ako ces se baviti osnovama programiranja, onda ti to nece biti bitno!

Re: main()

Poslao slobodan on 07.08.2008 14:07:49
Inače, ja sam pomenuo win i linux u usporedbi a ne HCmanijak, ali kad smo se već malo više dotakli te teme, da, dosta stvari je različito, ali što se konkretno "main()" tiče o čemu trenutno i pričamo, i pod win je poželjno da je to "int main()" i da po završetku vraća nešto sustavu, tako da u tom aspektu nema razlike.

Re: main()

Poslao HCmaniac on 08.08.2008 12:55:18
Puno hvala

Re: main()

Poslao jazzfan on 09.01.2009 1:36:28
inace, potpuno pravilno bi bilo:
int main (void) {
   (....)
   return 0;
}


int je obavezan jer vracas kod greske (0 = nema je)
a ovaj void unutar zagrada je potreban zato jer kada se poziva program, argumenti se prosljedjuju preko parametra main funkcije.... to izgleda ovako:
int main (int argc, char **argv) {
   // argc je broj argumenta prosljedjenih programu
   // arvg je niz stringova sa njihovim vrijednostima

   // ovaj program ispisuje sve argumente
    for (int i = 0; i < argc; i++) {
         printf ("Argument broj %d je %s\n", i, argv[i]);
    }
    return 0;
}


I, sada kada bi pokrenuli program ovako:
ime_programa.exe prvi drugi 123 555


dobili bi ispis:
Argument broj 0 je ime_programa.exe
Argument broj 1 je prvi
Argument broj 2 je drugi
Agrument broj 3 je 123
Afrument broj 4 je 555


Ova poruka je od: http://www.linux.hr/newbb/viewtopic.php?forum=8&topic_id=1866