Statiskās funkcijas C datorvalodā

Statiskas Funkcijas C Datorvaloda



“static” ir rezervēts vārds datorvalodā C. Tas ir krātuves klases specifikators, ko var izmantot ar funkcijām. C programmā var būt vairāk nekā viens fails. Tikai vienam no failiem jābūt C main() funkcijai. Šajā rakstā ir apskatīti tikai divi faili: fails ar C main() funkciju, ko sauc mainFile.c, un otrs fails bez galvenās funkcijas, ko sauc otherFile.c.

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



– Ievads – skatīt iepriekš

– C funkcijas prototips

– Globālā funkcija

– Pareiza statiskā funkcija

– Secinājums

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:

#include

char * fn1 ( char * stri ) ;

starpt galvenais ( )
{
char * str = fn1 ( 'redzēts' ) ;
printf ( '%s \n ' , str ) ;

atgriezties 0 ;
}

Tas sākas ar galvenes (bibliotēkas) iekļaušanu. Tam seko otra faila funkcijas fn() prototipa deklarācija.

Š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. exe

rindas beigās nospiežot taustiņu Enter. Izvadei jābūt “redzētai”.

Globālā funkcija

MainFile.c failu var modificēt šādi:

#include

char * 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ēts

Tā 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. exe

kompilators 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.