Staatilised funktsioonid arvutikeeles C

Staatilised Funktsioonid Arvutikeeles C



“staatiline” on reserveeritud sõna arvutikeeles C. See on salvestusklassi määraja, mida saab funktsioonidega kasutada. C-programmis võib olla rohkem kui üks fail. Ainult ühel failil peaks olema funktsioon C main(). Selles artiklis käsitletakse ainult kahte faili: C main() funktsiooniga faili, mille nimi on mainFile.c, ja teist faili, millel puudub põhifunktsioon, mida nimetatakse otherFile.c

Globaalne funktsioon

Globaalne funktsioon on funktsioon, mis on määratletud C-failis enne funktsiooni main(). Isegi funktsioon main() on globaalne funktsioon, kuid funktsioon main() ei ole selles artiklis keskendunud. Keeles C on programmeerija määratletud funktsioonid tavaliselt globaalsed funktsioonid ja neid nimetatakse lihtsalt funktsioonideks.

Globaalset funktsiooni saab selle failis välja kutsuda mis tahes ulatuses. Globaalse funktsiooni kuvamiseks teises failis tuleb selle prototüüp deklareerida selles erinevas failis (vt allpool). Et vältida ühes failis defineeritud funktsiooni nägemist teises failis, sisestage definitsiooni ette reserveeritud sõna, staatiline. Sellega oleks staatiline funktsioon globaalne funktsioon ainult oma failis ja seda ei näe teises failis.







Seega võib failis otherFile.c määratletud globaalset funktsiooni failis otherFile.c näha kõikjal. Selle kuvamiseks failis mainFile.c peab selle prototüüp olema deklareeritud failis mainFile.c (vt allpool). Selle definitsioonile failis otherFile.c ei tohiks eelneda sõna 'staatiline'. Selle kuvamise vältimiseks failis mainFile.c tuleb selle definitsioon failis otherFile.c muuta staatiliseks ja eemaldada koma, jättes selle ette sõna static.



See artikkel illustreerib staatilist funktsiooni arvutikeeles C, mis algab funktsiooni prototüübi tähendusest, ja selle kasutamist kahe või enama faili C-programmis.



Failide mainFile.c ja otherFile.c kompileerimist saab teha järgmise Bashi terminali käsuga:





gcc põhifail. c muu fail. c - see temp. exe

temp.exe on tulemuseks oleva üksiku käivitatava faili nimi.

Artikli sisu



– Sissejuhatus – vt eespool

– C funktsiooni prototüüp

– globaalne funktsioon

– Õige staatiline funktsioon

– Järeldus

C Funktsiooni prototüüp

Mõelge globaalse funktsiooni määratlusele:

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

Selle funktsiooni prototüüp on:

char * fn1 ( char * stri ) ;

See on funktsiooni allkiri, mis lõpeb semikooloniga.

Nüüd olgu faili otherFile.c sisu järgmine:

char * fn1 ( char * stri ) {

tagasi stri ;

}

Oletame, et failis otherFile.c on ainult globaalse funktsiooni fn1() definitsioon. Nüüd olgu faili mainFile.c sisu järgmine:

#include

char * fn1 ( char * stri ) ;

int peamine ( )
{
char * str = fn1 ( 'nähtud' ) ;
printf ( '%s \n ' , str ) ;

tagasi 0 ;
}

See algab päise (teegi) kaasamisega. Sellele järgneb teise faili funktsiooni fn() prototüübi deklaratsioon.

Sellel põhifailil ei ole ühegi globaalse funktsiooni määratlust peale vaikefunktsiooni main(). Põhifunktsioonis kutsub esimene lause teises failis määratletud funktsiooni fn1(). See kutse ei oleks tõhus, kui failis mainFile.c ei deklareeritaks fn1() prototüüpi.

Kui lugeja on ülaltoodud kaks faili kodeerinud, saab ta programmi järgmise käsuga üheks käivitatavaks failiks kompileerida:

gcc põhifail. c muu fail. c - see temp. exe

vajutades rea lõpus sisestusklahvi. Väljund peaks olema 'nähtud'.

Globaalne funktsioon

MainFile.c faili saab muuta järgmiselt.

#include

char * fn1 ( char * stri ) ;

char * fn ( char * St ) {
tagasi St ;
}

int peamine ( )
{
char * str1 = fn1 ( 'nähtud' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Ülemaailmne näha selle toimikus.' ) ;
printf ( '%s \n ' , str2 ) ;
tagasi 0 ;
}

Nüüd on failis mainFile.c kaks globaalset funktsiooni. Funktsioonide nimed on fn() ja main(). dfn() on globaalne funktsioon. Seda on näha funktsiooni main() kohalikus ulatuses, kutsudes. Keeles C nimetatakse globaalset funktsiooni globaalses ulatuses, näiteks fn(), lihtsalt funktsiooniks. Ka globaalset funktsiooni fn1() failis otherFile.c nimetatakse lihtsalt funktsiooniks.

Kui kaks faili kompileeritakse uuesti temp.exe-sse, on väljund järgmine:

nähtud

Selle failis on näha globaalne.

Märkus: funktsiooni fn() definitsiooni saab näha ka teises failis, otherFile.c. Selle saavutamiseks esitage failis otherFile.c selle prototüübi deklaratsioon järgmiselt.

char * fn ( char * St ) ;

lõpetades semikooloniga. See tegevus jääb lugejale harjutuseks.

Õige staatiline funktsioon

Ülaltoodud arutelu põhjal võib funktsiooni näha selle failis mis tahes ulatuses (ükskõik millises kohas). Seda saab näha ka teises failis sama programmi jaoks, kui selle prototüüp on seal deklareeritud. Selleks, et faili definitsiooni teises failis ei kuvataks, muutke definitsioon staatiliseks, jättes selle ette reserveeritud sõna, staatiline. Isegi kui selle prototüüp on deklareeritud teises failis, ei kuvata seda ikkagi teises failis. Programmifaile isegi ei kompileerita. Selle illustreerimiseks olgu faili otherFile.c sisu järgmine:

staatiline char * fn1 ( char * stri ) {

tagasi stri ;

}

See on sama sisu failis otherFile.c nagu varem, kuid eelneva reserveeritud sõnaga staatiline. MainFile.c faili sisu jääb samaks. Kui programmifaile üritatakse kompileerida käsuga,

gcc põhifail. c muu fail. c - see temp. exe

kompilaator väljastaks veateate, mis tähendab, et programm ei kompileerinud. Isegi kui prototüübi deklaratsioonile eri failis eelneb ka staatiline, ei kompileerita programmifaile ikkagi.

Järeldus

Funktsiooni definitsioon C-keeles on globaalne funktsioon. Seda funktsiooni saab kutsuda (näha) selle faili mis tahes ulatuses. Selle funktsiooni kuvamiseks teises failis, näiteks põhifailis, tuleb selle prototüübi deklaratsioon sisestada sellesse teise faili. Selle funktsiooni nägemise vältimiseks erinevates failides muutke selle määratlus staatiliseks, jättes selle ette reserveeritud sõna staatiline.