Šta je novo?

Deklarisanje main funkcije

srdjan_r

Čuven
Učlanjen(a)
16.07.2003
Poruke
382
Poena
620
Kakva je razlika izmedju ovoga:

void main()
{
}

i

int main(void)
{
}

U ovom prvom znam da main ne vraca vrednsot, a uvom drugom bi trebala je tipa int i da takodje ne vraca vrednost, jeli tako?
Sta je ovde po standardu C-a?
type;
 
Imajuci u vidu modularnost C++ dolazi se do zakljucka da je i main sama po sebi najobicnija funkcija. Ona ima povratni tip, znaci moze biti ili funkcija ili procedura, a takodje moze ili ne mora da ima parametre (uvek unapred predefinisana tri parametra) koji igraju ulogu parametara pri konzolarnom startovanju programa. Jedina razlika imedju main i bilo koje druge funkcije je u tome sto se ona po defaultu startuje pri pokretanju programa i sto se ne moze pozvati kao kao parametar ili procedura iz neke druge funkcije. U tvom slucaju kada je void main() ona naravno ne vraca nista a kada je int , moraces da na kraju main funkcije dodas return 0 (naravno ako main ne vraca neku vrednost) jer ce kompajler prijaviti gresku.
 
vidakm je napisao(la):
Imajuci u vidu modularnost C++ dolazi se do zakljucka da je i main sama po sebi najobicnija funkcija. Ona ima povratni tip, znaci moze biti ili funkcija ili procedura, a takodje moze ili ne mora da ima parametre (uvek unapred predefinisana tri parametra) koji igraju ulogu parametara pri konzolarnom startovanju programa. Jedina razlika imedju main i bilo koje druge funkcije je u tome sto se ona po defaultu startuje pri pokretanju programa i sto se ne moze pozvati kao kao parametar ili procedura iz neke druge funkcije. U tvom slucaju kada je void main() ona naravno ne vraca nista a kada je int , moraces da na kraju main funkcije dodas return 0 (naravno ako main ne vraca neku vrednost) jer ce kompajler prijaviti gresku.

To pretpotstavljam vazi i za obicni C?
 
nece prijaviti gresku, nego upozorenje
da, vazi i za "obicni" C.
po standardu je:
main()
{
.....
return 0;
)
kad napises samo main, compiler ce ga prepoznati kao int main

cheers
 
Kompajlerske direktive u C++ su negde diskutabilnog kvaliteta. To sto on samo upozorava, ne znaci da preko toga treba olako preci. Kompajler bi trebalo podesiti da ovakve a i slice greske automatski prijavi da kasnije pri radu sa slozenijim strukturama ne bi dolazilo do problema. Na primer, kompajler ce samo upozoriti pri vracanju reference na lokalno definisani objekat ili promenljivu (Borland cak ni toliko) a to je greska koja samo ceka da obori program...
 
Koliko se ja sećam po ansi c standardu je void main(void) ako f-ja ne vraća ništa.
 
1. Ocigledno C i C++ nisu isti jezici, tako da, iako danas vladaju "kombinovani" kompajleri koji 'vare' i c i c++ kod, nemojte podrazumevati da nesto u c-u mora da se ponasa potpuno isto u c++u.

2. vrednost koju vraca main (ako je definisana kao int) sluzi kao exit code programa. Najcesce se koristi tako da vraca 0 ukoliko je program zavrsio sav posao korektno, a non-zero vrednost ukoliko je doslo do neke greske. Naravno, taj int main moze da vrati i neku konkretnu vrednost (npr. rezultat racunanja). Tada je dosta olaksano koriscenje programa u raznim skriptama, jer moze u skripti da se testira exit code programa, pa ako je uradio posao OK, onda uradi A, a ako nije, onda uradi B ili C.
 
silverglider je napisao(la):
1. Ocigledno C i C++ nisu isti jezici, tako da, iako danas vladaju "kombinovani" kompajleri koji 'vare' i c i c++ kod, nemojte podrazumevati da nesto u c-u mora da se ponasa potpuno isto u c++u.

2. vrednost koju vraca main (ako je definisana kao int) sluzi kao exit code programa. Najcesce se koristi tako da vraca 0 ukoliko je program zavrsio sav posao korektno, a non-zero vrednost ukoliko je doslo do neke greske. Naravno, taj int main moze da vrati i neku konkretnu vrednost (npr. rezultat racunanja). Tada je dosta olaksano koriscenje programa u raznim skriptama, jer moze u skripti da se testira exit code programa, pa ako je uradio posao OK, onda uradi A, a ako nije, onda uradi B ili C.

Dakle sve u svemu, int main(void){} obavezno vraca neku vrednost. E, sad, koji od ova dva nacina deklarisanja je primereniji? Recimo, pisem obican program koji nesto radi, dakle u main idu pozivi na druge funkcije itd.
 
Vrh Dno