Statické funkce v počítačovém jazyce C

Staticke Funkce V Pocitacovem Jazyce C



„statický“ je vyhrazené slovo v počítačovém jazyce C. Je to specifikátor třídy úložiště, který lze použít s funkcemi. C program může mít více než jeden soubor. Pouze jeden ze souborů by měl mít funkci C main(). V tomto článku jsou zvažovány pouze dva soubory: soubor s funkcí C main() s názvem mainFile.c a druhý soubor bez hlavní funkce, který se nazývá otherFile.c

Globální funkce

Globální funkce je funkce definovaná v souboru C před funkcí main(). Dokonce i funkce main() je globální funkcí, ale funkce main() není předmětem tohoto článku. V jazyce C jsou funkce definované programátorem obvykle globální funkce a jednoduše se označují jako funkce.

Globální funkci lze volat v libovolném oboru v jejím souboru. Aby mohla být globální funkce vidět v jiném souboru, musí být její prototyp deklarován v tomto odlišném souboru (viz níže). Chcete-li zabránit tomu, aby funkce definovaná v jednom souboru byla viděna v jiném souboru, umístěte před definici znak vyhrazené slovo, statické. S tím by statická funkce byla globální funkcí pouze ve svém vlastním souboru a v jiném souboru nebude vidět.







Takže globální funkci definovanou v otherFile.c lze vidět kdekoli v otherFile.c. Aby byl vidět v mainFile.c, jeho prototyp musí být deklarován v mainFile.c (viz níže). Jeho definici v otherFile.c by nemělo předcházet „statický“. Aby se zabránilo jeho zobrazení v mainFile.c, jeho definice v otherFile.c musí být staticky odstraněna čárkou tím, že před ní bude slovo, static.



Tento článek ilustruje statickou funkci v počítačovém jazyce C počínaje významem prototypu funkce a její použití v programu C se dvěma nebo více soubory.



Kompilaci souborů, mainFile.c a otherFile.c, lze provést pomocí následujícího příkazu terminálu Bash:





gcc hlavní soubor. C jinýSoubor. C - ta tepl. exe

temp.exe je název výsledného jediného spouštěcího souboru.

Obsah článku



– Úvod – viz výše

– Prototyp funkce C

– Globální funkce

– Správná statická funkce

– Závěr

Prototyp funkce C

Zvažte globální definici funkce:

char * fn1 ( char * stri ) {
vrátit se stri ;
}

Prototyp této funkce je:

char * fn1 ( char * stri ) ;

Je to podpis funkce, který končí středníkem.

Nyní nechť obsah otherFile.c bude:

char * fn1 ( char * stri ) {

vrátit se stri ;

}

Předpokládejme, že soubor otherFile.c má pouze definici globální funkce fn1(). Nyní nechť obsah souboru, mainFile.c, bude:

#include

char * fn1 ( char * stri ) ;

int hlavní ( )
{
char * str = fn1 ( 'viděl' ) ;
printf ( '%s \n ' , str ) ;

vrátit se 0 ;
}

Začíná zahrnutím hlavičky (knihovny) . Následuje deklarace prototypu funkce, fn() druhého souboru.

Tento hlavní soubor nemá definici žádné jiné globální funkce než výchozí funkce main(). Ve funkci main volá první příkaz funkci fn1() definovanou v druhém souboru. Toto volání by nebylo účinné, pokud by prototyp fn1() nebyl deklarován v tomto souboru, mainFile.c.

Pokud čtenář zakódoval dva výše uvedené soubory, může program zkompilovat do jednoho spustitelného souboru pomocí následujícího příkazu:

gcc hlavní soubor. C jinýSoubor. C - ta tepl. exe

stisknutím klávesy Enter na konci řádku. Výstup by měl být „vidět“.

Globální funkce

Soubor mainFile.c lze upravit následovně:

#include

char * fn1 ( char * stri ) ;

char * fn ( char * Svatý ) {
vrátit se Svatý ;
}

int hlavní ( )
{
char * str1 = fn1 ( 'viděl' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Globální vidět v jeho složce.' ) ;
printf ( '%s \n ' , str2 ) ;
vrátit se 0 ;
}

Nyní jsou v souboru dvě globální funkce, mainFile.c. Názvy funkcí jsou fn() a main(). dfn() je globální funkce. Bylo to vidět v místním rozsahu funkce main() pomocí volání. V jazyce C je globální funkce v globálním rozsahu, jako je fn(), jednoduše označována jako funkce. Také globální funkce fn1() v souboru otherFile.c je jednoduše označována jako funkce.

Pokud jsou dva soubory znovu zkompilovány do temp.exe, výstup bude:

viděl

Global vidět v jeho souboru.

Poznámka: Definici funkce pro fn() lze také zobrazit v jiném souboru otherFile.c. Chcete-li toho dosáhnout, použijte deklaraci prototypu v otherFile.c takto:

char * fn ( char * Svatý ) ;

končí středníkem. Tato aktivita je ponechána jako cvičení pro čtenáře.

Správná statická funkce

Z výše uvedené diskuse lze vidět funkci v libovolném rozsahu (kdekoli) v jejím souboru. Může být také vidět v jiném souboru pro stejný program, pokud je tam deklarován jeho prototyp. Abyste zabránili zobrazení definice souboru v jiném souboru, udělejte definici statickou tak, že před ní bude vyhrazené slovo static. I když je jeho prototyp deklarován v jiném souboru, stále nebude vidět v jiném souboru. Programové soubory se ani nezkompilují. Pro ilustraci nechť obsah souboru otherFile.c bude:

statický char * fn1 ( char * stri ) {

vrátit se stri ;

}

Toto je stejný obsah v souboru otherFile.c jako dříve, ale s předchozím vyhrazeným slovem, statickým. Obsah souboru mainFile.c zůstává stejný. Pokud dojde k pokusu o kompilaci programových souborů pomocí příkazu,

gcc hlavní soubor. C jinýSoubor. C - ta tepl. exe

kompilátor by vydal chybovou zprávu, což znamená, že program nebyl zkompilován. I když před deklarací prototypu v jiném souboru také předchází statika, soubory programu se stále nezkompilují.

Závěr

Definice funkce v jazyce C je globální funkcí. Tuto funkci lze volat (vidět) v libovolném rozsahu v jejím souboru. Aby byla tato funkce vidět v jiném souboru, jako je hlavní soubor, musí být její prototypová deklarace zapsána do tohoto odlišného souboru. Chcete-li zabránit tomu, aby tato funkce byla viděna v jiném souboru, nastavte její definici na statickou tak, že před ní bude vyhrazené slovo static.