» »

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);
}

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;
}

DanKick ::

Yep, tako pa gre.
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);
}

Zgodovina sprememb…

  • spremenil: DanKick ()

Vesoljc ::

naredis lahko celo funkcijo pred mainom, ali pa le njen prototip (glavo)


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...

DanKick ::

Vesoljc:

Katere knjižice moram inkludat, da bo prevajalnik požrl to kodo ?

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);
}

Vesoljc ::

meni dela 8-)
#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 ::

kaj točno ti javi linker?

ps: za kodo na slotehu uporabljal tole:
Abnormal behavior of abnormal brain makes me normal...

Zgodovina sprememb…

  • zavaroval slike: Vesoljc ()

MartnKrp ::

DanDick, po mojem mas ti napako v include stavku:
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 8-O .

What the f... ?!?

MartnKrp ::

Kaj (oz. kdo) je imho?

Senitel ::

imho -> In My Humble Opinion >:D

MartnKrp ::

to je verjetno sistem na forumu, al kaj?

Zgodovina sprememb…

  • spremenilo: MartnKrp ()

DanKick ::

MartnKrp: ha,ha, spremenil si mi nick ------> DanDick, ni slabo, moram priznat :D :D :D

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 8-)
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.:D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c++ datoteke

Oddelek: Programiranje
463834 (3323) Vesoljc
»

Kako bi izbrisal vrstico v neki datoteki

Oddelek: Programiranje
91067 (944) DMouse
»

srand in program v Cju???

Oddelek: Programiranje
131520 (1390) nuclear
»

Težave pri prevajanju kode z Borlandovim prevajalnikom

Oddelek: Programiranje
8900 (761) DixieFlatline
»

Zanimiva C koda @ Win2K/XP

Oddelek: Programiranje
51080 (880) wintermute

Več podobnih tem