Statičke funkcije u računalnom jeziku C

Staticke Funkcije U Racunalnom Jeziku C



'statički' je rezervirana riječ u računalnom jeziku, C. To je specifikator klase pohrane koji se može koristiti s funkcijama. C program može imati više od jedne datoteke. Samo jedna od datoteka treba imati funkciju C main(). U ovom članku razmatraju se samo dvije datoteke: datoteka s funkcijom C main() koja se zove mainFile.c i druga datoteka bez glavne funkcije koja se zove otherFile.c

Globalna funkcija

Globalna funkcija je funkcija definirana u C datoteci prije funkcije main(). Čak je i funkcija main() globalna funkcija, ali funkcija main() nije fokus ovog članka. U jeziku C, programerski definirane funkcije obično su globalne funkcije i jednostavno se nazivaju funkcijama.

Globalna funkcija može se pozvati u bilo kojem opsegu u svojoj datoteci. Kako bi se globalna funkcija mogla vidjeti u drugoj datoteci, njezin prototip mora biti deklariran u toj drugoj datoteci (pogledajte dolje.) Kako biste spriječili da se funkcija definirana u jednoj datoteci vidi u drugoj datoteci, ispred definicije stavite rezervirana riječ, statična. Time bi statička funkcija bila globalna funkcija samo u vlastitoj datoteci i neće se vidjeti u drugoj datoteci.







Dakle, globalna funkcija definirana u otherFile.c može se vidjeti bilo gdje u otherFile.c. Da bi se vidio u mainFile.c, njegov prototip mora biti deklariran u mainFile.c (vidi dolje.) Njegovoj definiciji u otherFile.c ne bi trebao prethoditi 'static'. Kako bi se spriječilo da se vidi u mainFile.c, njegova definicija u otherFile.c mora biti staticremaknuta zarezom tako što će se ispred nje staviti riječ, static.



Ovaj članak ilustrira statičku funkciju u računalnom jeziku, C počevši od značenja prototipa funkcije i njegovu upotrebu u C programu od dvije ili više datoteka.



Kompilacija datoteka, mainFile.c i otherFile.c, može se izvršiti sljedećom Bash terminalskom naredbom:





gcc glavna datoteka. c otherFile. c - ta temp. egz

temp.exe naziv je rezultirajuće pojedinačne izvršne datoteke.

Sadržaj članka



– Uvod – vidi gore

– Prototip C funkcije

– Globalna funkcija

– Pravilna statička funkcija

– Zaključak

Prototip C funkcije

Razmotrite definiciju globalne funkcije:

char * fn1 ( char * stri ) {
povratak stri ;
}

Prototip ove funkcije je:

char * fn1 ( char * stri ) ;

To je signatura funkcije koja završava točkom i zarezom.

Sada neka sadržaj otherFile.c bude:

char * fn1 ( char * stri ) {

povratak stri ;

}

Pretpostavimo da datoteka otherFile.c ima samo definiciju globalne funkcije fn1(). Sada neka sadržaj datoteke, mainFile.c, bude:

#include

char * fn1 ( char * stri ) ;

int glavni ( )
{
char * str = fn1 ( 'vidjeno' ) ;
printf ( '%s \n ' , str ) ;

povratak 0 ;
}

Započinje uključivanjem zaglavlja (biblioteke). Nakon toga slijedi deklaracija prototipa funkcije, fn() druge datoteke.

Ova glavna datoteka nema definiciju nijedne globalne funkcije osim zadane funkcije main(). U glavnoj funkciji, prva izjava poziva funkciju fn1() definiranu u drugoj datoteci. Ovaj poziv ne bi bio učinkovit da prototip fn1() nije deklariran u ovoj datoteci, mainFile.c.

Ako je čitatelj kodirao gornje dvije datoteke, tada može kompajlirati program u jednu izvršnu datoteku sa sljedećom naredbom:

gcc glavna datoteka. c otherFile. c - ta temp. egz

pritiskom na tipku Enter na kraju retka. Rezultat bi trebao biti 'viđen'.

Globalna funkcija

Datoteka mainFile.c može se modificirati na sljedeći način:

#include

char * fn1 ( char * stri ) ;

char * fn ( char * sv ) {
povratak sv ;
}

int glavni ( )
{
char * str1 = fn1 ( 'vidjeno' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Globalno viđeno u dosjeu.' ) ;
printf ( '%s \n ' , str2 ) ;
povratak 0 ;
}

Postoje dvije globalne funkcije u datoteci, mainFile.c. Nazivi funkcija su fn() i main(). dfn() je globalna funkcija. Viđeno je u lokalnom opsegu funkcije main(), pozivom. U jeziku C, globalna funkcija u globalnom opsegu, kao što je fn(), jednostavno se naziva funkcija. Također, globalna funkcija, fn1() u datoteci, otherFile.c se jednostavno naziva funkcijom.

Ako se dvije datoteke ponovno kompajliraju u temp.exe, rezultat će biti:

vidio

Globalno se vidi u njegovoj datoteci.

Napomena: definicija funkcije za fn() također se može vidjeti u drugoj datoteci, otherFile.c. Da biste to postigli, imajte njegovu deklaraciju prototipa u otherFile.c, kako slijedi:

char * fn ( char * sv ) ;

završava točkom i zarezom. Ova aktivnost je ostavljena kao vježba za čitatelja.

Pravilna statička funkcija

Iz gornje rasprave, funkcija se može vidjeti u bilo kojem opsegu (bilo gdje) u svojoj datoteci. Također se može vidjeti u drugoj datoteci, za isti program, ako je tamo deklariran njegov prototip. Kako biste spriječili da se definicija datoteke vidi u drugoj datoteci, učinite definiciju statičnom tako da ispred nje stavite rezerviranu riječ static. Čak i ako je njegov prototip deklariran u drugoj datoteci, i dalje se neće vidjeti u drugoj datoteci. Programske datoteke neće se niti kompilirati. Da bismo ovo ilustrirali, neka sadržaj datoteke, otherFile.c bude:

statički char * fn1 ( char * stri ) {

povratak stri ;

}

Ovo je isti sadržaj u datoteci, otherFile.c, kao i prije, ali s prethodnom rezerviranom riječi, static. Sadržaj datoteke mainFile.c ostaje isti. Ako se pokuša prevesti programske datoteke pomoću naredbe,

gcc glavna datoteka. c otherFile. c - ta temp. egz

kompajler bi izdao poruku o grešci, što znači da se program nije kompilirao. Čak i ako deklaraciji prototipa u drugoj datoteci također prethodi static, programske datoteke se i dalje neće kompilirati.

Zaključak

Definicija funkcije u jeziku C je globalna funkcija. Ova se funkcija može pozvati (vidjeti) u bilo kojem opsegu u svojoj datoteci. Kako bi se ova funkcija mogla vidjeti u drugoj datoteci, kao što je glavna datoteka, njezina deklaracija prototipa mora biti upisana u tu drugu datoteku. Kako biste spriječili da se ova funkcija vidi u drugoj datoteci, učinite njezinu definiciju statičnom tako da ispred nje stavite rezerviranu riječ, static.