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ö
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:
#includehiiltyä * fn1 ( hiiltyä * stri ) ;
int pää ( )
{
hiiltyä * str = fn1 ( 'nähnyt' ) ;
printf ( '%s \n ' , str ) ;
palata 0 ;
}
Se alkaa
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ö. exepainamalla Enter-näppäintä rivin lopussa. Tulosteen tulee olla 'nähty'.
Globaali toiminto
MainFile.c-tiedostoa voidaan muokata seuraavasti:
#includehiiltyä * 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ähtyGlobaali 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ö. exekää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.