Увод у предпроцесорске директиве на Ц

Најчешће се наводи као заблуда да су препроцесори или макрои саставни део састављања програма, али потпуно је погрешно. Препроцесорске директиве су врста макронаредби и фаза пре компилације. Може се рећи да су то неке групе упутстава дате преводиоцу да изврши стварну компилацију. Такође су познате и као дуже конструкцијске скраћенице за макрое, што значи да се вредност у макроима замењује сегментом кодова. Макро је дефинисан посебним симболом и има симбол који започиње са "#", па су ови # дефине врста посебног претпроцесора које прати стварни преводилац. У овој теми ћемо сазнати о предпроцесорским директивама у Ц.

Препроцесор има посебну врсту репрезентације за своју идентификацију као и свака директива претпроцесора која се иницира посебним симболом „#“, након чега слиједи идентификатор, а затим назив директиве. Бели простор је такође дозвољен пре и после #. На пример, # инцлуде.

Постоје одређене погодности или погодности које Ц Препроцесор може да обезбеди:

  • Датотеке заглавља: Укључивање датотека заглавља начин је на који се декларације могу заменити синтаксом програма и телом програма.
  • Проширење макронаредбе: Дефинисање макронаредби је као скраћење дела кода које Ц препроцесор замењује макрое са њиховом одговарајућом дефиницијом.
  • Компилација према условима: Према различитим сценаријима или различитим условима, укључивање одређених делова програма је могуће условном компилацијом.
  • Контрола линија: Ако користите програм за комбиновање или преуређивање неке или више изворних датотека у интермедијарну датотеку за компилацију, можете користити контролу линија да обавестите преводиоца одакле свака изворна линија потиче.

Врсте директива о предпроцесорима

Све врсте предпроцесорских директива су следеће:

  1. # дефинисати
  2. # укључују
  3. # ифдеф
  4. # ундеф
  5. #ифндеф
  6. # ако
  7. #елсе
  8. #елиф
  9. #ендиф
  10. #еррор
  11. #прагма

1. #дефине (Макрои)

Макро је исечак кода који је замењен неком вредношћу кода макроа. Било која макронаредба углавном је описана и дефинисана директивом #дефине.

Синтакса:

#define token value

Постоје две врсте макронаредби:

  • Функција - попут макронаредби
  • Објекти попут макронаредби
Функција - попут макронаредби

Функција лике-мацро дјелује готово попут позива функције.

На пример:

#define MAX(a, b) ((a)>(b) ? (a): (b))

МАКС је макро име.

Пример:

Излаз:

Објекти попут макронаредби

Објектни макрои су врста идентификатора замијењена вриједношћу. Најчешће се користи за представљање нумеричких константи.

#define PI 3.1415

Овде ће вредност ПИ бити замењена макроом.


Излаз:

2. #инцлуде

Постоји још нека функција за укључивање препроцесорске директиве. Има своје три варијанте које замењују код са тренутним кодом изворних датотека.

Три варијанте су следеће:

  • #инцлуде
  • #инцлуде "датотека"
  • Укључите било шта друго

#инцлуде

Претражује датотеку на дефинисаној листи система или директорија како је наведено, а затим тражи стандардну листу системских библиотека.

#инцлуде "датотека"

Ова врста користи се за ваше прилагођене датотеке заглавља у програму. Претражује се датотека која се зове датотека прво у тренутном директорију, а затим системске датотеке са заглављима и тренутни директорији тренутне датотеке директорија.

# укључите било шта

Ова врста директиве за прецесор укључивања користи се када ниједна друга два преостала типа директиве и њени аргументи не одговарају и не задовољавају структуру рачунања.

3. #Ифдеф

Провјерава да ли је макро дефинисан с # дефине или не. Ако је одговор да, извршиће код у супротном неће.

Синтакса:

#ifdef MACRO
(
Code body
)
#endif
#undef:

Отказати дефиницију макроа значи да је дефинисана и да јој претходи #ундеф директива.

Синтакса:

#undef token

Излаз:

4. Ифндеф

Овај процесор проверава да ли је #дефине дефинисан или не #дефине. Ако је одговор да, он извршава код.

Синтакса:

#Ifndef MACRO
//code
#endif
#If

Овај процесор делује као иф петља, он процењује израз или стање. Ако је услов ид истинит, извршиће код иначе.

Синтакса:

#if expression
//code
#endif
#else

Директива за прецесор #елсе користи се за процену израза или стања ако је услов #иф лажан. Може се користити са #иф, #елиф, #ифдеф и #ифндеф директивама.

Синтакса:

#if expression
//if body
#else
//else body
#endif

Пример:

Излаз:

5. #Еррор

Као што му име каже, директива Препроцесор грешака користи се за означавање грешке, а затим преводилац даје фаталну грешку ако се нађе директива о грешци и прескочи следеће кораке компилације.

Излаз:

6. #прагма

Зависи од преводиоца, јер различити ОС и различите машине пружају све врсте функција оперативног система које компајлер користи да понуди додатне информације преводиоцу.

Синтакса:

#pragma token

Пример:

Излаз:

Сваки предпроцесор има свој значај, као што се употребљава условна директива за провјеру да ли се дио програма мора узети у обзир на основу сценарија или не.

Претпоставимо да програм жели да се састави у одређеном окружењу са одређеном конфигурацијом оперативног система, али чим пређе у ту фазу компилације баци грешку или може дати неважећем коду само дајући свом програму могућност великог не повезати програм и покренути га током извршавања. Може постојати и друга могућност да иста изворна датотека са два различита програма може извршити дуготрајну провјеру досљедности или њених непосредних података или исписати вриједности података отклањањем грешке.

Такође, ови сценарији који ће се креирати рачунањем такође се могу користити за покретање на једној машини коришћењем упутстава о претходној обради.

Закључак

Излаз из Ц Препроцесора доста личи на улаз, осим што су све директиве за предрадњу замењене празним линијама или белим простором. Различите датотеке и формати имају различите синтаксе које говоре да је почетак нове датотеке направљен или указује на повратак у датотеку или обраду треба обавити прије компилације.

Сви сценарији се користе да би се упознало са снагом препроцесора Ц и како се развија с различитим верзијама компајлера започетим са ГЦЦ и АНСИ стандардима.

Препоручени чланци

Ово је водич за препроцесорске директиве у Ц. Овде разговарамо о врстама препроцесорских директива са синтаксом и примерима. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. Обрнути број у Ц
  2. Сортирање на Ц
  3. Функција лежања у Ц
  4. Наставите са изјавом на Ц
  5. Сортирање у Ц #
  6. Како функционира хасхинг функција у пхп-у?

Категорија: