Глобал Фунцтион
Глобална функција је функција дефинисана у Ц датотеци пре функције маин(). Чак је и функција маин() глобална функција, али функција маин() није у фокусу овог чланка. У језику Ц, функције које дефинише програмер су обично глобалне функције и једноставно се називају функцијама.
Глобална функција се може позвати у било ком опсегу у њеној датотеци. Да би се глобална функција видела у другој датотеци, њен прототип мора бити декларисан у тој различитој датотеци (погледајте испод.) Да бисте спречили да се функција дефинисана у једној датотеци види у другој датотеци, претходите дефиницији са резервисана реч, статична. Уз то, статичка функција би била глобална функција само у својој датотеци и неће се видети у другој датотеци.
Дакле, глобална функција дефинисана у отхерФиле.ц може се видети било где у отхерФиле.ц. Да би се могао видети у маинФиле.ц, његов прототип мора бити декларисан у маинФиле.ц (погледајте испод.) Његовој дефиницији у отхерФиле.ц не би требало да претходи „статична“. Да би се спречило да се види у маинФиле.ц, његова дефиниција у отхерФиле.ц мора да буде статична иуклоњена зарез тако што ће јој претходити реч статиц.
Овај чланак илуструје статичку функцију у рачунарском језику, Ц који почиње значењем прототипа функције и његову употребу у Ц програму од две или више датотека.
Компилација датотека, маинФиле.ц и отхерФиле.ц, може се обавити следећом командом Басх терминала:
гцц маинФиле. ц отхерФиле. ц - та темп. еке
темп.еке је име резултирајуће појединачне извршне датотеке.
Садржај чланка
Прототип Ц функције
Размотрите дефиницију глобалне функције:
цхар * фн1 ( цхар * стр ) {повратак стр ;
}
Прототип за ову функцију је:
цхар * фн1 ( цхар * стр ) ;То је потпис функције, који се завршава тачком и зарезом.
Сада, нека садржај отхерФиле.ц буде:
цхар * фн1 ( цхар * стр ) {повратак стр ;
}
Претпоставимо да фајл отхерФиле.ц има само дефиницију глобалне функције, фн1(). Сада нека садржај датотеке, маинФиле.ц, буде:
#инцлуде <стдио.х>цхар * фн1 ( цхар * стр ) ;
инт главни ( )
{
цхар * стр = фн1 ( 'видео' ) ;
принтф ( „%с \н ' , стр ) ;
повратак 0 ;
}
Почиње укључивањем заглавља <стдио.х> (библиотеке). Ово је праћено декларацијом прототипа функције, фн() друге датотеке.
Ова главна датотека нема дефиницију ниједне глобалне функције осим подразумеване функције маин(). У главној функцији, прва изјава позива функцију фн1() дефинисану у другој датотеци. Овај позив не би био ефикасан ако прототип фн1() није декларисан у овој датотеци, маинФиле.ц.
Ако је читалац кодирао горње две датотеке, онда може да компајлира програм у једну извршну датотеку са следећом командом:
гцц маинФиле. ц отхерФиле. ц - та темп. екепритиском на тастер Ентер на крају реда. Излаз би требао бити „видјен“.
Глобал Фунцтион
Датотека маинФиле.ц се може изменити на следећи начин:
#инцлуде <стдио.х>цхар * фн1 ( цхар * стр ) ;
цхар * фн ( цхар * ст ) {
повратак ст ;
}
инт главни ( )
{
цхар * стр1 = фн1 ( 'видео' ) ;
принтф ( „%с \н ' , стр1 ) ;
цхар * стр2 = фн ( „Глобално виђено у свом досијеу.“ ) ;
принтф ( „%с \н ' , стр2 ) ;
повратак 0 ;
}
Сада, постоје две глобалне функције у датотеци, маинФиле.ц. Имена функција су фн() и маин(). дфн() је глобална функција. То је виђено у локалном опсегу функције маин(), позивом. У језику Ц, глобална функција у глобалном опсегу, као што је фн(), се једноставно назива функцијом. Такође, глобална функција, фн1() у датотеци, отхерФиле.ц се једноставно назива функција.
Ако се две датотеке поново компајлирају у темп.еке, резултат ће бити:
виђеноГлобал види у његовом фајлу.
Напомена: дефиниција функције за фн() такође може да се види у другој датотеци, отхерФиле.ц. Да бисте то постигли, имајте декларацију прототипа у отхерФиле.ц, на следећи начин:
цхар * фн ( цхар * ст ) ;завршава се тачком и зарезом. Ова активност је остављена као вежба за читаоца.
Исправна статичка функција
Из горње дискусије, функција се може видети у било ком опсегу (било где) у њеној датотеци. Такође се може видети у другој датотеци, за исти програм, ако је тамо декларисан његов прототип. Да бисте спречили да се дефиниција датотеке види у другој датотеци, учините дефиницију статичном тако што ће јој претходити резервисана реч, статиц. Чак и ако је његов прототип декларисан у другој датотеци, он се и даље неће видети у другој датотеци. Програмске датотеке неће ни компајлирати. Да бисмо ово илустровали, нека садржај датотеке, отхерФиле.ц буде:
статична цхар * фн1 ( цхар * стр ) {повратак стр ;
}
Ово је исти садржај у датотеци, отхерФиле.ц, као и раније, али са претходном резервисаном речју, статички. Садржај датотеке маинФиле.ц остаје исти. Ако се покуша компајлирати програмске датотеке помоћу наредбе,
гцц маинФиле. ц отхерФиле. ц - та темп. екекомпајлер би издао поруку о грешци, што значи да програм није преведен. Чак и ако декларацији прототипа у другој датотеци такође претходи статична, програмске датотеке се и даље неће компајлирати.
Закључак
Дефиниција функције у језику Ц је глобална функција. Ова функција се може позвати (видети) у било ком опсегу у њеној датотеци. Да би се ова функција видела у другој датотеци, као што је главна датотека, њена декларација прототипа мора бити откуцана у тој другој датотеци. Да бисте спречили да се ова функција види у различитој датотеци, учините њену дефиницију статичном тако што ће јој претходити резервисана реч, статиц.