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
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:
#includechar * fn1 ( char * stri ) ;
int glavni ( )
{
char * str = fn1 ( 'videno' ) ;
printf ( '%s \n ' , str ) ;
vrnitev 0 ;
}
Začne se z vključitvijo glave (knjižnice)
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. exes 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:
#includechar * 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:
videlGlobal 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. exeprevajalnik 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.