pocetnicki problem u c

Zool

Ističe se
Poruka
2.223
poceo sam da radim C u bloodshed devc++
kada otkucam sledeci kod i pokusam da ga kompajlujem izbaci sledecu gresku:
#include <stdio.h>
#include <conio.h>
void main()

{
float x;
printf("Input long in inches"); scanf("%f",&x);
printf("\n Long in centimetres:%10.2f\n",x*2.54);
printf("\n For end of program,press any key\n");
getch();
}

GRESKA:main must return int
 
Zool:
poceo sam da radim C u bloodshed devc++
kada otkucam sledeci kod i pokusam da ga kompajlujem izbaci sledecu gresku:
#include <stdio.h>
#include <conio.h>
void main()

{
float x;
printf("Input long in inches"); scanf("%f",&x);
printf("\n Long in centimetres:%10.2f\n",x*2.54);
printf("\n For end of program,press any key\n");
getch();
}

GRESKA:main must return int

probaj ovako :

#include <stdio.h>
#include <conio.h>
int main()

{
float x;
printf("Input long in inches"); scanf("%f",&x);
printf("\n Long in centimetres:%10.2f\n",x*2.54);
printf("\n For end of program,press any key\n");
getch();
return 0;
}
 
Prototipi main funkcije u C-u su:
int main(void)
int main(int, char *)
te se na osnovu toga vidi da funkcija treba da vrati neki integer. Pošto funckija ne vraća ništa, prevodioc je skrenuo pažnju na to. Ma da je verovatno prethodno trebao da upozorio da deklaracije funkcije ne odgovara prototopu, ali ... niko nije savršen.
 
Izgleda da kompajleri koji su 100% kompatibilni sa C99 standardom zahtevaju da main bude int. (Vraća vrednost koja je podatak o tome da li se f-ja izvršila pravilno.) Ako se ta knjiga zasniva na Kernikan & Riči C-u, onda verovatno piše po starijoj konvenciji...
 
U VS 6 i 2003 ne morata da vraca vrednost int za f-ju main() !! Cak i ako napisete da vraca int a ne stavite return naredbu, kompajler "podrazumeva" da umesto int stoji void...

E da, neko je gore pomenuo ovo:
int main(int, char *);

Trebalo bi da bude :
int main(int, char **)
il' ako vam se vise svidja:
int main(int, char *[] ) :)
 
toxi:
U VS 6 i 2003 ne morata da vraca vrednost int za f-ju main() !! Cak i ako napisete da vraca int a ne stavite return naredbu, kompajler "podrazumeva" da umesto int stoji void...

E da, neko je gore pomenuo ovo:
int main(int, char *);

Trebalo bi da bude :
int main(int, char **)
il' ako vam se vise svidja:
int main(int, char *[] ) :)
Hvala. Lapsus calami. :)
 
narode... mora da vraca vrednost jer operativni sistem (kao jedna super funkcija) zahteva da on (program) vrati da li se zavrsio regularno ili ne... tj ako vrati nesto sem nule (teoretski) OS ispisuje gresku... i pokusa da sredi ako ume... to tome sluzi, mada nikad nisam uspeo (nisam se ni trudio doduse) da to uradim...
 

Back
Top