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
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:
#includechar * 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)
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. exestisknutí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ě:
#includechar * 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ělGlobal 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. exekompilá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.