Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pitanja u vezi tutorijala | Programiranje PIC mikrokontrolera u jeziku C
#70
PHP Code:
void funk_c (void) {

    while(
1){
        
led_c 
        
if (tst_d == 0) {
            
led_c 0;
            
funk_b();
        } 
    } 
    
    
//funk_b je fizicki napisana     
    //ispod ove


BTW: Pise PHP code iznad, to sam izabrasao samo da bi bilo preglednije i u boji. Popravicu to kad stignem u konfiguraciji foruma da vazi i za C/C++ code.

U ovom primeru moras da koristis prototip funkcije za funk_b() jer je koristis pre nego sto si je definisao (odnosi se na fizicki redosled pisanja code-a).
Samo zamisli kompajler sta ovde radi, ide redom liniju po liniju i gleda sta treba da prevede u masinski code i naidje na funk_b() i dolazi do zakljucka "uh pa ja nemam to definisano, ne mogu dalje, error"!
Kada se koristi prototip ti njemu dajes do znanja "ej bice to negde dole definisano, ne luduj. Ok zapamticu to za kasnije" Smile

Takodje da si definisao funk_b() pre nego sto si je upotrebio nebi bilo greske i to je slucaj kad ne mora da se koristi prototip. Posto to cesto zna da bude problem kad si koju definisao i upotrebio (posebno kad se program razvuce u vise posebnih fajlova), uvek je sigurnije da radis sa prototipovima koje napises negde gore na pocetku programa i nemas problema.

I da, ne mozes da definises funkcije niti prototipove u nekoj drugoj funkciji, to mora da bude nezavisno, "stand-alone".
Opet zamisli sta bi kompajler tu zakljucio, "aha evo usao sam u funkciju i gle sad moram da definisem neku funkijcu ali ce da definicija iznova da se svaki put desava kada se ova 'tata' funkcija pozove".
Kada bi te pustio da to uradis (naravno nece, prijavice error) zavrsio bi na cuvenom sajtu http://stackoverflow.com sa nekim pitanjima jer bi ti se prepunio stack posle 10ak takvih prolaza i sve bi se zaglavilo Smile
---

Sto se tice povratka iz funkcije, kada se izvrsi poslednja linija pre zatvorene velike zagrade "}" tad se program vraca odakle je i usao u tu funkciju. Zavisno od definicije, ako si rekao da ta funkcija ne treba da vrati nikakav rezultat, nista specialno, napises koju god hoces narednu i to je to, ali ako si definisao da funkcija vraca neki podatak onda MORAS da koristi "return xyz;" iskaz.

C/C++ je vrlo rigorozan po pitanju definicije varijabli / funkcija i moras da ispostujes tj da se sve poklopi u svim delovima sto ukljucuje ulazne/izlazne tipove varijable kako kod upotrebe tako i kod definicije funkcija i prototipova. Neki drugi jezici su mnogo fleksibilniji po tom pitanju ali C/C++ je takav i to se zove "strong typing"
http://en.wikipedia.org/wiki/Strong_and_weak_typing
Reply


Messages In This Thread
RE: Pitanja u vezi tutorijala | Programiranje PIC mikrokontrolera u jeziku C - by mikikg - 08-31-2014, 11:13 PM

Forum Jump:


Users browsing this thread: 22 Guest(s)