Forum » Programiranje » Dev-C++ in napaka pri prevajanju funkcij
Dev-C++ in napaka pri prevajanju funkcij
DanKick ::
Torej, kadarkoli uporabim lastno funkcijo, mi program javi opozorilo in se posledično ne prevede.
En primer, skupaj z napako prilagam.
Warning in function 'int main()'
'squ' undeclared (first use function)
in še program:
#include stdio.h
int main()
{
int x, y;
for(x = 0 ; x < 8 ; x++)
{
y = squ(x);
printf("The square of %d is %d\n", x, y);
}
for (x = 0 ; x < 8 ; ++x)
printf("The square of %d is %d\n", x, squ(x));
return 0;
}
squ(input)
int input;
{
int square;
square = input * input;
return(square);
}
En primer, skupaj z napako prilagam.
Warning in function 'int main()'
'squ' undeclared (first use function)
in še program:
#include stdio.h
int main()
{
int x, y;
for(x = 0 ; x < 8 ; x++)
{
y = squ(x);
printf("The square of %d is %d\n", x, y);
}
for (x = 0 ; x < 8 ; ++x)
printf("The square of %d is %d\n", x, squ(x));
return 0;
}
squ(input)
int input;
{
int square;
square = input * input;
return(square);
}
DMouse ::
Poskusi takole:
#include <stdio.h>
int squ(int);
int main(void)
{
int x, y;
for(x = 0 ; x < 8 ; x++)
{
y = squ(x);
printf("The square of %d is %d\n", x, y);
}
for (x = 0 ; x < 8 ; ++x)
printf("The square of %d is %d\n", x, squ(x));
return 0;
}
int squ(int input)
{
int square;
square = input * input;
return square;
}
#include <stdio.h>
int squ(int);
int main(void)
{
int x, y;
for(x = 0 ; x < 8 ; x++)
{
y = squ(x);
printf("The square of %d is %d\n", x, y);
}
for (x = 0 ; x < 8 ; ++x)
printf("The square of %d is %d\n", x, squ(x));
return 0;
}
int squ(int input)
{
int square;
square = input * input;
return square;
}
DanKick ::
Yep, tako pa gre.
Se pravi, da moram vse kasneje uporabljene funkcije definirati že na začetku, a ne?
Se pravi, da moram vse kasneje uporabljene funkcije definirati že na začetku, a ne?
DanKick ::
[Linker error] undefined reference to gx__personality_v0'
Torej, gre za enak program, mi pa javi compiler to napako. Ne vidim, v čem je razlika z zgornjim, bi pa rad vedel, v kakšnem primeru javi to napako.
Še program:
#include stdio.h
#include conio.h
int squ(int);
int main(void)
{
int x, y;
for(x = 0 ; x < 8 ; x++)
{
y = squ(x); /* go get the value of x*x */
printf("The square of %d is %d\n", x, y);
}
for (x = 0 ; x < 8 ; ++x)
printf("The square of %d is %d\n", x, squ(x));
getch();
return 0;
}
int squ(int input)
{
int square;
square = input * input;
return(square);
}
Torej, gre za enak program, mi pa javi compiler to napako. Ne vidim, v čem je razlika z zgornjim, bi pa rad vedel, v kakšnem primeru javi to napako.
Še program:
#include stdio.h
#include conio.h
int squ(int);
int main(void)
{
int x, y;
for(x = 0 ; x < 8 ; x++)
{
y = squ(x); /* go get the value of x*x */
printf("The square of %d is %d\n", x, y);
}
for (x = 0 ; x < 8 ; ++x)
printf("The square of %d is %d\n", x, squ(x));
getch();
return 0;
}
int squ(int input)
{
int square;
square = input * input;
return(square);
}
Zgodovina sprememb…
- spremenil: DanKick ()
Vesoljc ::
naredis lahko celo funkcijo pred mainom, ali pa le njen prototip (glavo)
sej to dela, neee?
int calc(int, int); void main() { cout << calc(666,999); } int calc (int a, int b) { return(a+b); }
sej to dela, neee?
Abnormal behavior of abnormal brain makes me normal...
Vesoljc ::
#include <iostream> using namespace std;
to je to...
drgač ti pa napako javu linker in ne compiler
sklicuješ se na nekaj, česar ne najde...
Abnormal behavior of abnormal brain makes me normal...
DanKick ::
Še vedno imam problem z linkerjem.
Če funkcijo na začetku navedem kot prototip, mi linker javlja napako.
Če celotno funkcijo prenesem pred main() pa stvar deluje.
Prilagam še primer z nedelujočim prototipom:
#include stdio.h
void fixup(int nuts, int *fruit);
int main()
{
int pecans, apples;
pecans = 100;
apples = 101;
printf("The starting values are %d %d\n", pecans, apples);
fixup(pecans, &apples);
printf("The ending values are %d %d\n", pecans, apples);
return 0;
}
void fixup(int nuts, int *fruit)
{
printf("The values are %d %d\n", nuts, *fruit);
nuts = 135;
*fruit = 172;
printf("The values are %d %d\n" ,nuts, *fruit);
}
Če funkcijo na začetku navedem kot prototip, mi linker javlja napako.
Če celotno funkcijo prenesem pred main() pa stvar deluje.
Prilagam še primer z nedelujočim prototipom:
#include stdio.h
void fixup(int nuts, int *fruit);
int main()
{
int pecans, apples;
pecans = 100;
apples = 101;
printf("The starting values are %d %d\n", pecans, apples);
fixup(pecans, &apples);
printf("The ending values are %d %d\n", pecans, apples);
return 0;
}
void fixup(int nuts, int *fruit)
{
printf("The values are %d %d\n", nuts, *fruit);
nuts = 135;
*fruit = 172;
printf("The values are %d %d\n" ,nuts, *fruit);
}
Vesoljc ::
meni dela
#include <stdio.h> #include <iostream> void fixup(int nuts, int *fruit); int main() { int pecans, apples; pecans = 100; apples = 101; printf("The starting values are %d %d\n", pecans, apples); fixup(pecans, &apples); printf("The ending values are %d %d\n", pecans, apples); std::cin.get(); return 0; } void fixup(int nuts, int *fruit) { printf("The values are %d %d\n", nuts, *fruit); nuts = 135; *fruit = 172; printf("The values are %d %d\n" ,nuts, *fruit); }
Abnormal behavior of abnormal brain makes me normal...
Vesoljc ::
Abnormal behavior of abnormal brain makes me normal...
Zgodovina sprememb…
- zavaroval slike: Vesoljc ()
MartnKrp ::
DanDick, po mojem mas ti napako v include stavku:
napacno:
pravilno:
napacno:
#include stdio.h
pravilno:
#include <stdio.h>
Vesoljc ::
imho jih je izpustil, zaradi sintakse foruma
Abnormal behavior of abnormal brain makes me normal...
DanKick ::
Vesoljc:
Dobro, mi lahko poveš, kje je razlika v programu, ki si ga "prepisal" in tistim, ki sem ga postal jaz.
Jaz jo namreč ne vidim, dejstvo pa je, da, če tvojo kodo kopiram v compiler, jo brez problema prevede .
What the f... ?!?
Dobro, mi lahko poveš, kje je razlika v programu, ki si ga "prepisal" in tistim, ki sem ga postal jaz.
Jaz jo namreč ne vidim, dejstvo pa je, da, če tvojo kodo kopiram v compiler, jo brez problema prevede .
What the f... ?!?
DanKick ::
MartnKrp: ha,ha, spremenil si mi nick ------> DanDick, ni slabo, moram priznat
Drugače pa ima Vesoljc prav. Znake pri include sem izpustil, ker so to rezervirani znaki v tem forumu.
Vseeno pa mi ni jasno, zakaj se koda od Vesoljca prevede, moja pa ne.
Drugače pa ima Vesoljc prav. Znake pri include sem izpustil, ker so to rezervirani znaki v tem forumu.
Vseeno pa mi ni jasno, zakaj se koda od Vesoljca prevede, moja pa ne.
Vesoljc ::
Vseeno pa mi ni jasno, zakaj se koda od Vesoljca prevede, moja pa ne.
vesoljc ma filling
vesoljc ma filling
Abnormal behavior of abnormal brain makes me normal...
MartnKrp ::
Primerjaj dele kode, znak po znak, nekje mora bit napaka!
Mogoce kaki skriti znak?
Ali pa prepisi vesoljcevo kodo in ne daj copy-paste.
Mogoce kaki skriti znak?
Ali pa prepisi vesoljcevo kodo in ne daj copy-paste.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | c++ datotekeOddelek: Programiranje | 4061 (3550) | Vesoljc |
» | Kako bi izbrisal vrstico v neki datotekiOddelek: Programiranje | 1135 (1012) | DMouse |
» | srand in program v Cju???Oddelek: Programiranje | 1593 (1463) | nuclear |
» | Težave pri prevajanju kode z Borlandovim prevajalnikomOddelek: Programiranje | 968 (829) | DixieFlatline |
» | Zanimiva C koda @ Win2K/XPOddelek: Programiranje | 1135 (935) | wintermute |