Funkcja globalna
Funkcja globalna to funkcja zdefiniowana w pliku C przed funkcją Main (). Nawet funkcja main () jest funkcją globalną, ale funkcja main () nie jest przedmiotem tego artykułu. W języku C funkcje zdefiniowane przez programistę są zwykle funkcjami globalnymi i po prostu określane jako funkcje.
Funkcję globalną można wywołać w dowolnym zakresie w pliku. Aby globalna funkcja była widoczna w innym pliku, jego prototyp musi zostać zadeklarowany w tym innym pliku (patrz poniżej.) Aby zapobiec, aby funkcja zdefiniowana w jednym pliku jest widoczna w innym pliku, poprzedzaj definicję zarezerwowanym słowem, statycznym. Dzięki temu funkcja statyczna byłaby funkcją globalną tylko we własnym pliku i nie będzie widoczna w innym pliku.
Tak więc funkcja globalna zdefiniowana w innym pliku.c można zobaczyć w dowolnym miejscu w innym pliku.C. Aby zobaczyć to w Mainfile.c, jego prototyp musi zostać zadeklarowany w pliku main.c (patrz poniżej.) Jego definicja w innym pliku.C nie powinno być poprzedzone przez „statyczne”. Aby zapobiec jego widzeniu w Mainfile.c, jego definicja w innym pliku.C musi być staticreMoved A Comma, poprzedzając go słowem, statycznym.
Ten artykuł ilustruje funkcję statyczną w języku komputerowym, C zaczyna się od znaczenia prototypu funkcji i jej użycia w programie C dwóch lub więcej plików.
Kompilacja plików, Mainfile.C i inny plik.c, można wykonać za pomocą następujące polecenie terminali Bash:
GCC Mainfile.c INNY PLILE.C -O Temp.exeTemp.EXE to nazwa uzyskanego pojedynczego pliku wykonującego.
Treść artykułu
- Wprowadzenie - patrz wyżej
- C prototyp funkcji
- Funkcja globalna
- Właściwa funkcja statyczna
- Wniosek
C prototyp funkcji
Rozważ definicję funkcji globalnej:
char* fn1 (char* stri)Prototypem tej funkcji jest:
char* fn1 (char* stri);Jest to podpis funkcji, kończący się w półkolisku.
Teraz niech treść drugiego pliku.c be:
char* fn1 (char* stri)Załóżmy, że plik, drugi plik.C ma tylko definicję funkcji globalnej, FN1 (). Teraz pozwól treści pliku, Mainfile.c, bądź:
#włączaćZaczyna się od włączenia nagłówka (biblioteka). Następnie następuje deklaracja prototypowej funkcji, fn () drugiego pliku.
Ten główny plik nie ma definicji żadnej funkcji globalnej innej niż Funkcja Domyślna Main (). W funkcji głównej pierwsza instrukcja wywołuje funkcję fn1 () zdefiniowaną w drugim pliku. To połączenie nie byłoby skuteczne, gdyby prototyp FN1 () nie został zadeklarowany w tym pliku, Mainfile.C.
Jeśli czytelnik zakodował powyższe dwa pliki, może skompilować program do jednego pliku wykonywalnego za pomocą następującego polecenia:
GCC Mainfile.c INNY PLILE.C -O Temp.exeNaciśnięcie klawisza Enter na końcu linii. Wyjście powinno być „widziane”.
Funkcja globalna
Plik main.Plik C można zmodyfikować w następujący sposób:
#włączaćTeraz w pliku są dwie funkcje globalne, mainfile.C. Nazwy funkcji to fn () i main (). dfn () to funkcja globalna. Było to widoczne w lokalnym zakresie funkcji Main (), przez połączenie. W języku C funkcja globalna w globalnym zakresie, taka jak FN (), jest po prostu określana jako funkcja. Również funkcja globalna, fn1 () w pliku, drugi plik.C jest po prostu określany jako funkcja.
Jeśli dwa pliki zostaną ponownie skompilowane w temp.Exe, wtedy Omadel będzie:
widzianyGlobal widziany w jego pliku.
Uwaga: Definicja funkcji dla fn () można również zobaczyć w drugim pliku, drugi plik.C. Aby to osiągnąć, ma swoją prototypową deklarację w innym pliku.c, jak następuje:
char* fn (char* st);kończąc na półkolisu. Ta aktywność pozostaje jako ćwiczenie dla czytelnika.
Właściwa funkcja statyczna
Z powyższej dyskusji funkcja można zobaczyć w dowolnym zakresie (w dowolnym miejscu) w jej pliku. Można go również zobaczyć w innym pliku, dla tego samego programu, jeśli jego prototyp zostanie tam ogłoszony. Aby zapobiec dostrzeżeniu definicji pliku w innym pliku, uczyń definicję statyczną, poprzedzając ją zarezerwowanym słowem, statycznym. Nawet jeśli jego prototyp jest zadeklarowany w innym pliku, nadal nie będzie widać w innym pliku. Pliki programu nawet się nie skompilują. Aby to zilustrować, niech treść pliku, drugi plik.c be:
static char* fn1 (char* stri)To jest ta sama treść w pliku, drugi plik.c, jak poprzednio, ale z poprzednim zarezerwowanym słowem, statycznym. Zawartość pliku main.plik C, pozostaje taki sam. Jeśli podjęto próbę skompilowania plików programu z poleceniem,
GCC Mainfile.c INNY PLILE.C -O Temp.exeKompilator wyda komunikat o błędzie, co oznacza, że program nie skompilował. Nawet jeśli deklaracja prototypu w innym pliku jest również poprzedzona przez statyczną.
Wniosek
Definicja funkcji w języku C jest funkcją globalną. Tę funkcję można wywołać (widoczne) w dowolnym zakresie w pliku. Aby ta funkcja była widoczna w innym pliku, takim jak plik główny, jego prototypowa deklaracja musi być wpisana w tym innym pliku. Aby zapobiec dostrzeżeniu tej funkcji w innym pliku, uczyń jej definicję statyczną poprzez poprzedzenie jej zarezerwowanym słowem, statycznym.