Staattiset funktiot C-tietokonekielessä

Staattiset Funktiot C Tietokonekielessa



'staattinen' on varattu sana tietokonekielessä C. Se on tallennusluokan määrittäjä, jota voidaan käyttää funktioiden kanssa. C-ohjelmassa voi olla useampi kuin yksi tiedosto. Vain yhdessä tiedostossa tulee olla C main()-funktio. Tässä artikkelissa käsitellään vain kahta tiedostoa: tiedostoa, jossa on C main()-funktio, jota kutsutaan mainFile.c-nimiseksi, ja toista tiedostoa ilman pääfunktiota, jota kutsutaan nimellä otherFile.c.

Globaali toiminto

Globaali funktio on funktio, joka on määritetty C-tiedostossa ennen main()-funktiota. Jopa main()-funktio on globaali funktio, mutta main()-funktio ei ole tämän artikkelin painopiste. C-kielessä ohjelmoijan määrittämät funktiot ovat yleensä globaaleja toimintoja ja niitä kutsutaan yksinkertaisesti funktioiksi.

Globaalia funktiota voidaan kutsua missä tahansa laajuudessa sen tiedostossa. Jotta globaali funktio voidaan nähdä eri tiedostossa, sen prototyyppi on ilmoitettava kyseisessä eri tiedostossa (katso alla.) Jotta yhdessä tiedostossa määritetty funktio ei näkyisi eri tiedostossa, kirjoita määritelmän edelle varattu sana, staattinen. Tällöin staattinen funktio olisi globaali funktio vain omassa tiedostossaan, eikä sitä näytetä toisessa tiedostossa.







Joten muuFile.c:ssä määritetty yleinen funktio voidaan nähdä missä tahansa tiedostossa otherFile.c. Jotta se näkyy mainFile.c:ssä, sen prototyyppi on ilmoitettava mainFile.c:ssä (katso alla.) Sen määritelmää tiedostossa otherFile.c ei tulisi edeltää sanalla 'staattinen'. Jotta se ei näkyisi mainFile.c:ssä, sen määritelmä muussaFile.c:ssä on tehtävä staattiseksi ja poistettava pilkku lisäämällä sen eteen sana static.



Tämä artikkeli havainnollistaa staattista funktiota tietokonekielellä, joka alkaa funktion prototyypin merkityksestä, ja sen käyttöä kahden tai useamman tiedoston C-ohjelmassa.



Tiedostot, mainFile.c ja otherFile.c, voidaan kääntää seuraavalla Bash-päätekomennolla:





gcc päätiedosto. c muu tiedosto. c - tuo lämpö. exe

temp.exe on tuloksena olevan yksittäisen suoritettavan tiedoston nimi.

Artikkelin sisältö



– Johdanto – katso edellä

– C-funktion prototyyppi

– Globaali toiminto

– Oikea staattinen toiminto

– Päätelmä

C-funktion prototyyppi

Harkitse globaalin funktion määritelmää:

hiiltyä * fn1 ( hiiltyä * stri ) {
palata stri ;
}

Tämän toiminnon prototyyppi on:

hiiltyä * fn1 ( hiiltyä * stri ) ;

Se on funktion allekirjoitus, joka päättyy puolipisteeseen.

Olkoon otherFile.c:n sisältö nyt:

hiiltyä * fn1 ( hiiltyä * stri ) {

palata stri ;

}

Oletetaan, että tiedostossa otherFile.c on vain yleisfunktion fn1() määritelmä. Anna nyt tiedoston mainFile.c sisällön olla:

#include

hiiltyä * fn1 ( hiiltyä * stri ) ;

int pää ( )
{
hiiltyä * str = fn1 ( 'nähnyt' ) ;
printf ( '%s \n ' , str ) ;

palata 0 ;
}

Se alkaa -otsikon (kirjasto) sisällyttämisellä. Tätä seuraa toisen tiedoston funktion fn() prototyyppimääritys.

Tässä päätiedostossa ei ole minkään muun globaalin funktion määritelmää kuin oletusarvoinen main()-funktio. Pääfunktiossa ensimmäinen lauseke kutsuu toisessa tiedostossa määritettyä funktiota fn1(). Tämä kutsu ei olisi tehokas, jos fn1():n prototyyppiä ei ole ilmoitettu tässä tiedostossa, mainFile.c.

Jos lukija on koodannut yllä olevat kaksi tiedostoa, hän voi koota ohjelman yhdeksi suoritettavaksi tiedostoksi seuraavalla komennolla:

gcc päätiedosto. c muu tiedosto. c - tuo lämpö. exe

painamalla Enter-näppäintä rivin lopussa. Tulosteen tulee olla 'nähty'.

Globaali toiminto

MainFile.c-tiedostoa voidaan muokata seuraavasti:

#include

hiiltyä * fn1 ( hiiltyä * stri ) ;

hiiltyä * fn ( hiiltyä * st ) {
palata st ;
}

int pää ( )
{
hiiltyä * str1 = fn1 ( 'nähnyt' ) ;
printf ( '%s \n ' , str1 ) ;
hiiltyä * str2 = fn ( 'Global näkyy sen tiedostossa.' ) ;
printf ( '%s \n ' , str2 ) ;
palata 0 ;
}

Nyt tiedostossa, mainFile.c, on kaksi yleistä funktiota. Funktioiden nimet ovat fn() ja main(). dfn() on globaali funktio. Se on nähty main()-funktiossa paikallisessa laajuudessa, kutsulla. Kielessä C globaalissa laajuudessa olevaa globaalia funktiota, kuten fn(), kutsutaan yksinkertaisesti funktioksi. Myös tiedoston otherFile.c yleisfunktiota fn1() kutsutaan yksinkertaisesti funktioksi.

Jos nämä kaksi tiedostoa käännetään uudelleen temp.exe-tiedostoon, tulos on:

nähty

Globaali näkyy sen tiedostossa.

Huomautus: fn():n funktion määritelmä voidaan saada näkyviin myös toisessa tiedostossa, otherFile.c. Tämän saavuttamiseksi käytä prototyyppiilmoitusta otherFile.c:ssä seuraavasti:

hiiltyä * fn ( hiiltyä * st ) ;

päättyy puolipisteeseen. Tämä toiminta on jätetty harjoitukseksi lukijalle.

Oikea staattinen toiminto

Yllä olevasta keskustelusta funktio voidaan nähdä missä tahansa laajuudessa (missä tahansa) sen tiedostossa. Se voidaan nähdä myös eri tiedostossa, samalle ohjelmalle, jos sen prototyyppi on ilmoitettu siellä. Jotta tiedoston määritelmä ei näy eri tiedostossa, määritä määritelmä staattiseksi kirjoittamalla sen eteen varattu sana, staattinen. Vaikka sen prototyyppi on ilmoitettu eri tiedostossa, se ei silti näy eri tiedostossa. Ohjelmatiedostoja ei edes käännetä. Tämän havainnollistamiseksi olkoon tiedoston otherFile.c sisältö:

staattinen hiiltyä * fn1 ( hiiltyä * stri ) {

palata stri ;

}

Tämä on sama sisältö tiedostossa otherFile.c kuin aiemmin, mutta edellisellä varatulla sanalla, staattinen. MainFile.c-tiedoston sisältö pysyy samana. Jos ohjelmatiedostoja yritetään kääntää komennolla,

gcc päätiedosto. c muu tiedosto. c - tuo lämpö. exe

kääntäjä antaisi virheilmoituksen, mikä tarkoittaa, että ohjelma ei kääntänyt. Vaikka eri tiedostossa olevaa prototyyppiilmoitusta edeltää myös staattinen, ohjelmatiedostot eivät silti käänny.

Johtopäätös

Funktiomäärittely C-kielellä on globaali funktio. Tätä funktiota voidaan kutsua (nähdä) missä tahansa laajuudessa sen tiedostossa. Jotta tämä toiminto näkyisi eri tiedostossa, kuten päätiedostossa, sen prototyyppiilmoitus on kirjoitettava kyseiseen eri tiedostoon. Jotta tämä toiminto ei näy eri tiedostossa, tee sen määritelmä staattiseksi kirjoittamalla sen eteen varattu sana, staattinen.