Globālā funkcija
Globālā funkcija ir funkcija, kas definēta C failā pirms funkcijas main(). Pat funkcija main () ir globāla funkcija, bet galvenā () funkcija šajā rakstā nav galvenā uzmanība. Valodā C programmētāja definētās funkcijas parasti ir globālas funkcijas un vienkārši tiek sauktas par funkcijām.
Globālo funkciju var izsaukt jebkurā tās faila apjomā. Lai globālā funkcija būtu redzama citā failā, tās prototips ir jādeklarē šajā citā failā (skatiet tālāk). Lai vienā failā definētā funkcija netiktu skatīta citā failā, pirms definīcijas ievadiet rezervēts vārds, statisks. Tādējādi statiskā funkcija būtu globāla funkcija tikai savā failā un netiks redzēta citā failā.
Tātad globālā funkcija, kas definēta failā otherFile.c, ir redzama jebkur failā otherFile.c. Lai to redzētu failā mainFile.c, tā prototips ir jādeklarē failā mainFile.c (skatiet tālāk.) Pirms tā definīcijas failā otherFile.c nevajadzētu būt vārdam “static”. Lai tas netiktu pamanīts failā mainFile.c, tā definīcija failā otherFile.c ir jāpadara statiska un jānoņem komats, pirms tā pievienojot vārdu static.
Šis raksts ilustrē statisko funkciju datorvalodā C, kas sākas ar funkcijas prototipa nozīmi, un tās izmantošanu divu vai vairāku failu C programmā.
Failu mainFile.c un otherFile.c kompilāciju var veikt ar šādu Bash termināļa komandu:
gcc galvenais fails. c cits fails. c - ka temp. exe
temp.exe ir iegūtā viena izpildāmā faila nosaukums.
Raksta saturs
C funkcijas prototips
Apsveriet globālās funkcijas definīciju:
char * fn1 ( char * stri ) {atgriezties stri ;
}
Šīs funkcijas prototips ir:
char * fn1 ( char * stri ) ;Tas ir funkcijas paraksts, kas beidzas ar semikolu.
Tagad ļaujiet faila otherFile.c saturam būt:
char * fn1 ( char * stri ) {atgriezties stri ;
}
Pieņemsim, ka failam otherFile.c ir tikai globālās funkcijas fn1() definīcija. Tagad faila mainFile.c saturam jābūt:
#includechar * fn1 ( char * stri ) ;
starpt galvenais ( )
{
char * str = fn1 ( 'redzēts' ) ;
printf ( '%s \n ' , str ) ;
atgriezties 0 ;
}
Tas sākas ar
Šim galvenajam failam nav nevienas globālas funkcijas definīcijas, izņemot noklusējuma funkciju main(). Galvenajā funkcijā pirmais priekšraksts izsauc funkciju fn1(), kas definēta citā failā. Šis izsaukums nebūtu efektīvs, ja fn1() prototips nebūtu deklarēts šajā failā mainFile.c.
Ja lasītājs ir iekodējis divus iepriekš minētos failus, viņš var apkopot programmu vienā izpildāmā failā ar šādu komandu:
gcc galvenais fails. c cits fails. c - ka temp. exerindas beigās nospiežot taustiņu Enter. Izvadei jābūt “redzētai”.
Globālā funkcija
MainFile.c failu var modificēt šādi:
#includechar * fn1 ( char * stri ) ;
char * fn ( char * st ) {
atgriezties st ;
}
starpt galvenais ( )
{
char * str1 = fn1 ( 'redzēts' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Globāls redzams tā failā.' ) ;
printf ( '%s \n ' , str2 ) ;
atgriezties 0 ;
}
Tagad failā ir divas globālas funkcijas mainFile.c. Funkciju nosaukumi ir fn() un main(). dfn() ir globāla funkcija. Tas ir redzams funkcijā main() vietējā tvērumā, izsaukumā. Valodā C globālā funkcija globālajā tvērumā, piemēram, fn(), tiek vienkārši saukta par funkciju. Arī globālā funkcija fn1() failā otherFile.c tiek vienkārši apzīmēta kā funkcija.
Ja abi faili tiek atkārtoti apkopoti temp.exe, izeja būs šāda:
redzētsTā failā redzams globāls.
Piezīme. Fn() funkcijas definīciju var redzēt arī citā failā otherFile.c. Lai to panāktu, failā otherFile.c ir jāiekļauj tā prototipa deklarācija, kā norādīts tālāk.
char * fn ( char * st ) ;beidzas ar semikolu. Šī aktivitāte ir atstāta kā lasītāja vingrinājums.
Pareiza statiskā funkcija
No iepriekš minētās diskusijas funkciju var redzēt jebkurā tvērumā (jebkur) tās failā. To var redzēt arī citā failā tai pašai programmai, ja tur ir deklarēts tās prototips. Lai faila definīcija netiktu skatīta citā failā, iestatiet definīciju statisku, pirms tās ierakstot rezervēto vārdu, statisku. Pat ja tā prototips ir deklarēts citā failā, tas joprojām nebūs redzams citā failā. Programmas faili pat netiks apkopoti. Lai to ilustrētu, ļaujiet faila otherFile.c saturam būt:
statisks char * fn1 ( char * stri ) {atgriezties stri ;
}
Tas ir tāds pats saturs failā otherFile.c kā iepriekš, bet ar iepriekšējo rezervēto vārdu, static. MainFile.c faila saturs paliek nemainīgs. Ja tiek mēģināts apkopot programmas failus ar komandu,
gcc galvenais fails. c cits fails. c - ka temp. exekompilators izdotu kļūdas ziņojumu, kas nozīmē, ka programma nav kompilējusi. Pat ja prototipa deklarācijas citā failā priekšā ir arī statisks, programmas faili joprojām netiks apkopoti.
Secinājums
Funkcijas definīcija C valodā ir globāla funkcija. Šo funkciju var izsaukt (redzēt) jebkurā tās faila apjomā. Lai šī funkcija būtu redzama citā failā, piemēram, galvenajā failā, tās prototipa deklarācija ir jāievada šajā atšķirīgajā failā. Lai šī funkcija netiktu pamanīta citā failā, iestatiet tās definīciju statisku, pirms tās ierakstot rezervēto vārdu static.