Statické funkcie v počítačovom jazyku C

Staticke Funkcie V Pocitacovom Jazyku C



„statický“ je vyhradené slovo v počítačovom jazyku C. Je to špecifikátor triedy úložiska, ktorý možno použiť s funkciami. Program C môže mať viac ako jeden súbor. Len jeden zo súborov by mal mať funkciu C main(). V tomto článku sa berú do úvahy iba dva súbory: súbor s funkciou C main() s názvom mainFile.c a druhý súbor bez hlavnej funkcie, ktorý sa nazýva otherFile.c

Globálna funkcia

Globálna funkcia je funkcia definovaná v súbore C pred funkciou main(). Dokonca aj funkcia main() je globálna funkcia, ale funkcia main() nie je zameraná v tomto článku. V jazyku C sú funkcie definované programátorom zvyčajne globálne funkcie a jednoducho sa označujú ako funkcie.

Globálnu funkciu možno volať v akomkoľvek rozsahu v jej súbore. Aby bola globálna funkcia viditeľná v inom súbore, jej prototyp musí byť deklarovaný v tomto inom súbore (pozri nižšie). Ak chcete zabrániť tomu, aby sa funkcia definovaná v jednom súbore zobrazovala v inom súbore, pred definíciu rezervované slovo, statické. Vďaka tomu by statická funkcia bola globálnou funkciou iba vo svojom vlastnom súbore a v inom súbore ju nebude vidieť.







Takže globálnu funkciu definovanú v otherFile.c možno vidieť kdekoľvek v otherFile.c. Aby ho bolo možné vidieť v mainFile.c, jeho prototyp musí byť deklarovaný v mainFile.c (pozri nižšie). Jeho definícii v otherFile.c by nemal predchádzať „statický“. Aby sa predišlo jeho videniu v mainFile.c, jeho definícia v otherFile.c musí byť staticky odstránená čiarka tak, že pred ňou bude slovo, static.



Tento článok ilustruje statickú funkciu v počítačovom jazyku C počnúc významom prototyp funkcie a jej použitie v programe C s dvoma alebo viacerými súbormi.



Kompiláciu súborov, mainFile.c a otherFile.c, je možné vykonať pomocou nasledujúceho príkazu terminálu Bash:





hlavný súbor gcc. c inýSúbor. c - tá tepl. exe

temp.exe je názov výsledného jedného spusteného súboru.

Obsah článku



– Úvod – pozri vyššie

– Prototyp funkcie C

– Globálna funkcia

– Správna statická funkcia

– Záver

Prototyp funkcie C

Zvážte definíciu globálnej funkcie:

char * fn1 ( char * stri ) {
vrátiť stri ;
}

Prototyp tejto funkcie je:

char * fn1 ( char * stri ) ;

Je to podpis funkcie, ktorý končí bodkočiarkou.

Teraz nech je obsah otherFile.c:

char * fn1 ( char * stri ) {

vrátiť stri ;

}

Predpokladajme, že súbor otherFile.c má iba definíciu globálnej funkcie fn1(). Teraz nech je obsah súboru mainFile.c:

#include

char * fn1 ( char * stri ) ;

int hlavné ( )
{
char * str = fn1 ( 'videl' ) ;
printf ( '%s \n ' , str ) ;

vrátiť 0 ;
}

Začína sa zahrnutím hlavičky (knižnice) . Potom nasleduje deklarácia prototypu funkcie, fn() druhého súboru.

Tento hlavný súbor nemá definíciu žiadnej globálnej funkcie okrem predvolenej funkcie main(). Vo funkcii main volá prvý príkaz funkciu fn1() definovanú v druhom súbore. Toto volanie by nebolo účinné, ak by prototyp fn1() nebol deklarovaný v tomto súbore, mainFile.c.

Ak čitateľ zakódoval dva vyššie uvedené súbory, potom môže program skompilovať do jedného spustiteľného súboru pomocou nasledujúceho príkazu:

hlavný súbor gcc. c inýSúbor. c - tá tepl. exe

stlačením klávesu Enter na konci riadku. Výstup by mal byť „videný“.

Globálna funkcia

Súbor mainFile.c je možné upraviť nasledovne:

#include

char * fn1 ( char * stri ) ;

char * fn ( char * sv ) {
vrátiť sv ;
}

int hlavné ( )
{
char * str1 = fn1 ( 'videl' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'V jeho spise vidno globálne.' ) ;
printf ( '%s \n ' , str2 ) ;
vrátiť 0 ;
}

Teraz sú v súbore dve globálne funkcie, mainFile.c. Názvy funkcií sú fn() a main(). dfn() je globálna funkcia. Bolo to vidieť v lokálnom rozsahu funkcie main() prostredníctvom volania. V jazyku C sa globálna funkcia v globálnom rozsahu, ako napríklad fn(), jednoducho označuje ako funkcia. Aj globálna funkcia fn1() v súbore otherFile.c sa jednoducho označuje ako funkcia.

Ak sa tieto dva súbory znova skompilujú do súboru temp.exe, výstup bude:

videný

Globálne vidieť v jeho súbore.

Poznámka: Definíciu funkcie pre fn() je možné vidieť aj v inom súbore otherFile.c. Aby ste to dosiahli, majte deklaráciu prototypu v otherFile.c takto:

char * fn ( char * sv ) ;

končiace bodkočiarkou. Táto aktivita je ponechaná ako cvičenie pre čitateľa.

Správna statická funkcia

Z vyššie uvedenej diskusie možno vidieť funkciu v akomkoľvek rozsahu (kdekoľvek) v jej súbore. Môže sa tiež zobraziť v inom súbore pre rovnaký program, ak je tam deklarovaný jeho prototyp. Aby ste zabránili tomu, aby sa definícia súboru zobrazovala v inom súbore, urobte definíciu statickou tak, že pred ňou bude rezervované slovo, static. Aj keď je jeho prototyp deklarovaný v inom súbore, stále sa v inom súbore nezobrazí. Programové súbory sa ani neskompilujú. Aby sme to ilustrovali, nech je obsah súboru otherFile.c:

statické char * fn1 ( char * stri ) {

vrátiť stri ;

}

Toto je rovnaký obsah v súbore otherFile.c ako predtým, ale s predchádzajúcim rezervovaným slovom, statickým. Obsah súboru mainFile.c zostáva rovnaký. Ak sa pokúsite skompilovať programové súbory pomocou príkazu,

hlavný súbor gcc. c inýSúbor. c - tá tepl. exe

kompilátor vydá chybové hlásenie, čo znamená, že program sa neskompiloval. Aj keď deklarácii prototypu v inom súbore predchádza statický, programové súbory sa stále neskompilujú.

Záver

Definícia funkcie v jazyku C je globálna funkcia. Túto funkciu možno volať (vidieť) v akomkoľvek rozsahu v jej súbore. Aby bola táto funkcia viditeľná v inom súbore, ako je hlavný súbor, jej prototypová deklarácia musí byť napísaná v tomto inom súbore. Ak chcete zabrániť tomu, aby sa táto funkcia zobrazovala v inom súbore, urobte jej definíciu statickou tak, že pred ňou bude rezervované slovo, static.