Statinės funkcijos C kompiuterių kalboje

Statines Funkcijos C Kompiuteriu Kalboje



„static“ yra rezervuotas žodis kompiuterio kalboje C. Tai saugojimo klasės specifikacija, kurią galima naudoti su funkcijomis. C programa gali turėti daugiau nei vieną failą. Tik viename iš failų turi būti C main() funkcija. Šiame straipsnyje nagrinėjami tik du failai: failas su C main() funkcija, kuris vadinamas mainFile.c, ir kitas failas be pagrindinės funkcijos, kuris vadinamas otherFile.c

Pasaulinė funkcija

Visuotinė funkcija yra funkcija, apibrėžta C faile prieš main() funkciją. Netgi funkcija main () yra visuotinė funkcija, tačiau šiame straipsnyje pagrindinis dėmesys skiriamas funkcijai main (). C kalboje programuotojo apibrėžtos funkcijos paprastai yra visuotinės funkcijos ir tiesiog vadinamos funkcijomis.

Globali funkcija gali būti iškviesta bet kurioje jos failo apimties. Kad pasaulinė funkcija būtų matoma kitame faile, jos prototipas turi būti deklaruotas tame kitame faile (žr. toliau). Kad viename faile apibrėžta funkcija nebūtų matoma kitame faile, prieš apibrėžimą įveskite rezervuotas žodis, statinis. Tokiu atveju statinė funkcija būtų visuotinė funkcija tik savo faile ir nebus matoma kitame faile.







Taigi, globalią funkciją, apibrėžtą otherFile.c, galima matyti bet kurioje vietoje otherFile.c. Kad jis būtų matomas mainFile.c, jo prototipas turi būti deklaruotas mainFile.c (žr. toliau). Prieš jo apibrėžimą otherFile.c neturėtų būti žodžio „static“. Kad jis nebūtų matomas mainFile.c, jo apibrėžimas otherFile.c turi būti statinis ir pašalintas kablelis, prieš jį įrašant žodį static.



Šis straipsnis iliustruoja statinę funkciją kompiuterio kalba, C, pradedant funkcijos prototipo reikšme, ir jos naudojimą dviejų ar daugiau failų C programoje.



Failų, mainFile.c ir otherFile.c, kompiliavimas gali būti atliktas naudojant šią Bash terminalo komandą:





gcc pagrindinis failas. c kitas failas. c - kad temp. exe

temp.exe yra gauto vieno vykdomojo failo pavadinimas.

Straipsnio turinys



– Įvadas – žr. aukščiau

– C funkcijos prototipas

– Pasaulinė funkcija

– Tinkama statinė funkcija

– Išvada

C funkcijos prototipas

Apsvarstykite visuotinės funkcijos apibrėžimą:

char * fn1 ( char * stri ) {
grąžinti stri ;
}

Šios funkcijos prototipas yra:

char * fn1 ( char * stri ) ;

Tai funkcijos parašas, kuris baigiasi kabliataškiu.

Dabar tegul otherFile.c turinys yra:

char * fn1 ( char * stri ) {

grąžinti stri ;

}

Tarkime, kad faile otherFile.c yra tik visuotinės funkcijos fn1() apibrėžimas. Dabar tegul failo mainFile.c turinys yra:

#include

char * fn1 ( char * stri ) ;

tarpt pagrindinis ( )
{
char * g = fn1 ( 'mačiau' ) ;
printf ( '%s \n , g ) ;

grąžinti 0 ;
}

Jis prasideda įtraukiant antraštę (biblioteką). Po to seka kito failo funkcijos fn() prototipo deklaracija.

Šiame pagrindiniame faile nėra jokios globalios funkcijos apibrėžimo, išskyrus numatytąją funkciją main(). Pagrindinėje funkcijoje pirmasis sakinys iškviečia funkciją fn1(), apibrėžtą kitame faile. Šis iškvietimas būtų neveiksmingas, jei šiame faile mainFile.c nebūtų deklaruotas fn1() prototipas.

Jei skaitytojas užkodavo du aukščiau nurodytus failus, jis gali sukompiliuoti programą į vieną vykdomąjį failą su šia komanda:

gcc pagrindinis failas. c kitas failas. c - kad temp. exe

eilutės pabaigoje paspauskite klavišą Enter. Išvestis turėtų būti „matyta“.

Pasaulinė funkcija

MainFile.c failą galima modifikuoti taip:

#include

char * fn1 ( char * stri ) ;

char * fn ( char * Šv ) {
grąžinti Šv ;
}

tarpt pagrindinis ( )
{
char * str1 = fn1 ( 'mačiau' ) ;
printf ( '%s \n , str1 ) ;
char * str2 = fn ( „Pasaulinis matomas jo byloje“. ) ;
printf ( '%s \n , str2 ) ;
grąžinti 0 ;
}

Dabar faile yra dvi pasaulinės funkcijos mainFile.c. Funkcijų pavadinimai yra fn() ir main(). dfn() yra visuotinė funkcija. Tai buvo pastebėta iškvietimu pagrindinės () funkcijos vietinėje srityje. Kalboje C globali funkcija globalioje srityje, pvz., fn(), tiesiog vadinama funkcija. Be to, visuotinė funkcija fn1() faile otherFile.c tiesiog vadinama funkcija.

Jei du failai iš naujo sukompiliuojami į temp.exe, išvestis bus tokia:

matytas

Pasaulinis matomas jo faile.

Pastaba: fn() funkcijos apibrėžimas taip pat gali būti matomas kitame faile, otherFile.c. Norėdami tai padaryti, faile otherFile.c pateikite prototipo deklaraciją, kaip nurodyta toliau:

char * fn ( char * Šv ) ;

baigiant kabliataškiu. Ši veikla skaitytojui paliekama kaip pratimas.

Tinkama statinė funkcija

Iš pirmiau pateiktos diskusijos funkcija gali būti matoma bet kokia apimtimi (bet kur) jos faile. Jį taip pat galima pamatyti kitame tos pačios programos faile, jei ten deklaruojamas jos prototipas. Kad failo apibrėžimas nebūtų matomas kitame faile, nustatykite apibrėžimą statinį, prieš jį nurodydami rezervuotą žodį, statinį. Net jei jo prototipas yra nurodytas kitame faile, jis vis tiek nebus matomas kitame faile. Programos failai net nebus kompiliuojami. Norėdami tai iliustruoti, tegul failo otherFile.c turinys yra:

statinis char * fn1 ( char * stri ) {

grąžinti stri ;

}

Tai yra tas pats failo otherFile.c turinys, kaip ir anksčiau, bet su ankstesniu rezervuotu žodžiu, static. MainFile.c failo turinys išlieka toks pat. Jei bandoma kompiliuoti programos failus su komanda,

gcc pagrindinis failas. c kitas failas. c - kad temp. exe

Kompiliatorius pateiks klaidos pranešimą, ty programa nesukompiliavo. Net jei prieš prototipo deklaraciją kitame faile taip pat yra statinis, programos failai vis tiek nebus kompiliuojami.

Išvada

Funkcijos apibrėžimas C kalba yra visuotinė funkcija. Šią funkciją galima iškviesti (pamatyti) bet kurioje jos failo apimtyje. Kad ši funkcija būtų matoma kitame faile, pvz., pagrindiniame faile, jos prototipo deklaracija turi būti įvesta tame kitame faile. Kad ši funkcija nebūtų matoma kitame faile, padarykite jos apibrėžimą statinį, prieš jį nurodydami rezervuotą žodį static.