[ mrki @ 28.09.2002. 02:44 ] @
Dali je tacno da u C-u, ne treba deklarisati funkciju, pre njenog definisanja i koriscenja kao sto je to obavezno u C++.
[ Dejan Lozanovic @ 28.09.2002. 09:29 ] @
pazi u C/C++ ako koristis neku funkciju ili u C++ klasu, a da predhodno nije definisana moras da ju deklarises u protivnom ce kompajler da se buni kako funkcija/klasa nije definisana.
[ Goran Rakić @ 28.09.2002. 10:02 ] @
pa kada kreneš da pšozivaš funkcije iz funkcija moraš da paziš koju ćeš prvo da deklarišeš, što je noćna mora.
[ Predrag Damnjanovic @ 28.09.2002. 11:16 ] @
Citat:
mrki:
Dali je tacno da u C-u, ne treba deklarisati funkciju, pre njenog definisanja i koriscenja kao sto je to obavezno u C++.

Nije tacno!
[ Milan Aksic @ 28.09.2002. 14:39 ] @
Generalno da. U vecim programima mora biti deklarisana funkcija jer se ne zna kojim ce se redosledom pozivati.
Suprotno,kada nije deklarisana, u tom slucaju funkcija mora biti definisana pre funkcije u kojoj se poziva.
Inace slazem se da je dobra praxa, uvek deklarisati funkciju.
Code:

#include <stdio.h>

void Proba1(); // deklarisana jer se koristi u funkciji ispod, odnosno u main()

void main()
{
 printf("main() funkcija\n");
 Proba1();
}

void Proba2() // definisana jer se koristi u funckiji Proba1() bez prototipa jer se ne koristi u funkciji main()
{
 printf("Proba2() funkcija\n");
}

void Proba1()
{
 Proba2();
 printf("Proba1() funkcija\n");
}
[ mrki @ 28.09.2002. 17:29 ] @
Primljeno k' znanju.


A evo da ispravim i gresku u postavljenom pitanju. Mislim da se Pecin odgovor odnosio i na prvi i na drugi deo pitanja, natero me covek da proverim. Pa evo sta kaze i knjiga na to:





..." Iako mozete definisati funkciju pre njenog koriscenja i tako izbeci potrebu kreiranja prototipa funkcije, ovo nije dobra programska praksa zbog tri razloga:


Prvo-zahtevati da se funkcije pojave u datotedc u odredenom redosledu je losa ideja. Ovo otezava odrzavanje programa dok se zahtevi menjaju.


Drugo-moze da zatreba sposobnost funkcije A() da pozove funkciju B(), ali i da vi B() trebalo da bude sposobna da pozove A(), pod odredjenim okolnostima. Nije moguce definisati A() pre definisanja B() i B() pre definisanja A(), pa se, zato, bar jedna od njih mora deklarisati, u svakom slucaju.


Trece-prototipovi funkcija su dobra i mocna tehnika dibagiranja. Ako vas prototip deklarise da vasa funkcija prihvata odredjen skup parametara, ili da vraca odreden tip vrednosti, a onda vasa funkcija ne odgovara prototipu, kompajler moze oznaciti vasu gresku, umesto da ceka da se ona sama pokaze kada izvrsite program"...
[ anon676 @ 29.09.2002. 09:56 ] @
mozes deklaristati a i ne moras!
[ Dejan Lozanovic @ 29.09.2002. 11:58 ] @
Citat:

mozes deklaristati a i ne moras!


Pa onda gledas u pasulj koji ce kompajleri prijaviti gresku a koji nece.
[ Dejan Lozanovic @ 29.09.2002. 12:01 ] @
Citat:
Go! X:
pa kada kreneš da pšozivaš funkcije iz funkcija moraš da paziš koju ćeš prvo da deklarišeš, što je noćna mora.

Sve je to stvar dobre organizacije, recimo primer dobre orgaanizacije je da napravis jedan header fajl gde ces deklarisati sve funkcije. i na pocetku programa samo jedan mali #include i nemas problema oko toga sta kojim redom pozivas :))), kratko jasno i jednostavno :)