Statične funkcije v računalniškem jeziku C

Staticne Funkcije V Racunalniskem Jeziku C



»statičen« je rezervirana beseda v računalniškem jeziku C. Je specifikator pomnilniškega razreda, ki se lahko uporablja s funkcijami. Program C ima lahko več kot eno datoteko. Samo ena od datotek mora imeti funkcijo C main(). V tem članku sta obravnavani samo dve datoteki: datoteka s funkcijo C main(), ki se imenuje mainFile.c, in druga datoteka brez glavne funkcije, ki se imenuje otherFile.c

Globalna funkcija

Globalna funkcija je funkcija, definirana v datoteki C pred funkcijo main(). Tudi funkcija main() je globalna funkcija, vendar funkcija main() ni v središču tega članka. V jeziku C so funkcije, ki jih določi programer, običajno globalne funkcije in jih preprosto imenujemo funkcije.

Globalno funkcijo je mogoče poklicati v katerem koli obsegu v njeni datoteki. Če želite, da je globalna funkcija vidna v drugi datoteki, mora biti njen prototip naveden v tej drugi datoteki (glejte spodaj). Če želite preprečiti, da bi bila funkcija, definirana v eni datoteki, vidna v drugi datoteki, pred definicijo vnesite pridržana beseda, statična. S tem bi bila statična funkcija globalna funkcija samo v svoji datoteki in je ne bi videli v drugi datoteki.







Torej je globalno funkcijo, definirano v otherFile.c, mogoče videti kjer koli v otherFile.c. Da bi ga lahko videli v mainFile.c, je treba njegov prototip deklarirati v mainFile.c (glejte spodaj). Pred njegovo definicijo v otherFile.c ne sme biti naveden »static«. Da preprečite, da bi bila vidna v mainFile.c, je treba njeno definicijo v otherFile.c spremeniti v staticre, odstraniti vejico tako, da pred njo postavite besedo static.



Ta članek ponazarja statično funkcijo v računalniškem jeziku C, ki se začne s pomenom prototipa funkcije in njeno uporabo v programu C dveh ali več datotek.



Prevajanje datotek, mainFile.c in otherFile.c, lahko izvedete z naslednjim terminalskim ukazom Bash:





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

temp.exe je ime nastale posamezne izvajalne datoteke.

Vsebina članka



– Uvod – glej zgoraj

– Prototip funkcije C

– Globalna funkcija

– Pravilna statična funkcija

– Zaključek

Prototip funkcije C

Razmislite o globalni definiciji funkcije:

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

Prototip te funkcije je:

char * fn1 ( char * stri ) ;

Je podpis funkcije, ki se konča s podpičjem.

Zdaj naj bo vsebina otherFile.c:

char * fn1 ( char * stri ) {

vrnitev stri ;

}

Predpostavimo, da ima datoteka otherFile.c samo definicijo globalne funkcije fn1(). Zdaj naj bo vsebina datoteke mainFile.c:

#include

char * fn1 ( char * stri ) ;

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

vrnitev 0 ;
}

Začne se z vključitvijo glave (knjižnice) . Temu sledi deklaracija prototipa funkcije fn() druge datoteke.

Ta glavna datoteka nima definicije nobene globalne funkcije razen privzete funkcije main(). V glavni funkciji prvi stavek kliče funkcijo fn1(), definirano v drugi datoteki. Ta klic ne bi bil učinkovit, če prototip fn1() ne bi bil deklariran v tej datoteki, mainFile.c.

Če je bralec kodiral zgornji dve datoteki, lahko prevede program v eno izvršljivo datoteko z naslednjim ukazom:

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

s pritiskom na tipko Enter na koncu vrstice. Rezultat bi moral biti 'viden'.

Globalna funkcija

Datoteko mainFile.c je mogoče spremeniti na naslednji način:

#include

char * fn1 ( char * stri ) ;

char * fn ( char * st ) {
vrnitev st ;
}

int glavni ( )
{
char * str1 = fn1 ( 'videno' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Global viden v svoji datoteki.' ) ;
printf ( '%s \n ' , str2 ) ;
vrnitev 0 ;
}

Zdaj sta v datoteki dve globalni funkciji, mainFile.c. Imena funkcij sta fn() in main(). dfn() je globalna funkcija. Videli so ga v lokalnem obsegu funkcije main() s klicem. V jeziku C se globalna funkcija v globalnem obsegu, kot je fn(), preprosto imenuje funkcija. Tudi globalna funkcija fn1() v datoteki otherFile.c se preprosto imenuje funkcija.

Če sta datoteki znova prevedeni v temp.exe, bo rezultat:

videl

Global je viden v svoji datoteki.

Opomba: definicijo funkcije za fn() je mogoče prikazati tudi v drugi datoteki, otherFile.c. Če želite to doseči, imejte njegovo deklaracijo prototipa v otherFile.c, kot sledi:

char * fn ( char * st ) ;

ki se konča s podpičjem. Ta dejavnost je prepuščena bralcu kot vaja.

Pravilna statična funkcija

Iz zgornje razprave je mogoče funkcijo videti v katerem koli obsegu (kjer koli) v njeni datoteki. Videti ga je mogoče tudi v drugi datoteki za isti program, če je tam deklariran njegov prototip. Da preprečite, da bi bila definicija datoteke vidna v drugi datoteki, naredite definicijo statično tako, da pred njo postavite rezervirano besedo static. Tudi če je njegov prototip naveden v drugi datoteki, še vedno ne bo viden v drugi datoteki. Programske datoteke se ne bodo niti prevedle. Za ponazoritev tega naj bo vsebina datoteke otherFile.c:

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

vrnitev stri ;

}

To je ista vsebina v datoteki otherFile.c kot prej, vendar s predhodno rezervirano besedo static. Vsebina datoteke mainFile.c ostaja enaka. Če poskusite prevesti programske datoteke z ukazom,

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

prevajalnik bi izdal sporočilo o napaki, kar pomeni, da se program ni prevedel. Tudi če je pred deklaracijo prototipa v drugi datoteki tudi statična, se programske datoteke še vedno ne bodo prevedle.

Zaključek

Definicija funkcije v jeziku C je globalna funkcija. To funkcijo je mogoče poklicati (videti) v katerem koli obsegu v njeni datoteki. Da je ta funkcija vidna v drugi datoteki, kot je glavna datoteka, je treba njeno prototipno deklaracijo vnesti v to drugo datoteko. Da preprečite, da bi bila ta funkcija vidna v drugi datoteki, naredite njeno definicijo statično tako, da pred njo postavite rezervirano besedo static.