22942

ПРЕПРОЦЕСОРНІ ЗАСОБИ

Лекция

Информатика, кибернетика и программирование

ім’я_директиви лексемиоперанди { лексемиоперанди } Макропідстановки: define ідентифікатор послідовність_символів Сем. define begin { define end } main begin if begin end else return 0; end На виході препроцесора цей фрагмент матиме вигляд: main { if { }else return 0; } Допускаються ланцюжки макропідстановок. ...

Русский

2013-08-04

34.5 KB

2 чел.

ТЕМА: ПРЕПРОЦЕСОРНІ ЗАСОБИ.

Препроцесор є складовою системи програмування мови Сі, до якої входять також текстовий редактор, компілятор, програма-компононвщик (редактор звязків), програма-завантажувач, програма-відлагоджувач. Препроцесор  отримує на вхід текст Сі-програми з директивами препроцесора, виконує їх і вилучає з тексту. При цьому :

спочатку «склеюються рядки », тобто рядок, що закінчується символом ‘\’ з’єднується з наступним (просто відкидається пара  символів ‘\’ та ‘\n’ !). Далі програма розбивається на лексеми,  розділені символами-роздільниками. Коментарі замінюються на один пробіл. Потім препроцесор виконує безпосередньо свої директиви. Ескейп-послідовності  в символьних константах і в рядках-літералах замінюються на відповідні значення. Сусідні рядки-літерали конкатенуються.

Директиви задають певні синтаксичні перетворення тексту програми. Вони розміщуються в окремих рядках і  розпочинаються символом ‘#’/. Зона їх дії – від   директиви  до кінця текстового файлу.

 

Синт.  

            #<ім’я_директиви>  <лексеми-операнди>{  <лексеми-операнди>}

  1.  Макропідстановки:

   #define  <ідентифікатор>  <послідовність_символів>  

Сем.:  далі в тексті всі входження даного ідентифікатора  будуть  замінені на відповідну послідовність символів.        

Нпр.,    # define  begin  {

            # define  end  }

               main()

               begin

                        if (…)  begin ………… end

                                else return 0;

                end

На виході  препроцесора  цей фрагмент матиме вигляд:

               main()

               { if(…)   { …………}else return 0;

                }

Допускаються  ланцюжки  макропідстановок.

Нпр.,    # define  МАХ  1024

            # define  RANGE  MAX-32

               main()

               {  int i;

                         i=RANGE;  ....                    

                }

            # define  RANGE  1024-32

               main()

               {  int i;

                         i=RANGE;  ....   

                 }

              main()

               {  int i;

                         i=1024-32 ...                    

                }

  1.  Макроси:

   #define  <імя_макросу>(<параметр>{, <параметр>})  <тіло-макросу>  

<параметр>::=  послідовність символів

<тіло-макросу>  ::=  послідовність символів, що містить параметри

Виклик  макросу:

<імя_макросу>(<фактичний_параметр>,…, <фактичний_параметр>)

<фактичний_параметр>::= послідовність символів

Сем.   Дія макросу полягає в заміні всіх його викликів на модифіковане тіло. Модифікація тіла полягає в заміні параметрів в ньому на їх фактичні  значення.

Нпр.,  #define MAX(X,Y)  ((X>Y)?X:Y)

            main()

               {  int i;

                         i=MAX(i, 100)  ....                    

                }

            main()

               {  int i;

                         i=((i>100)?i:100)  ....                    

                }

Область дії  директиви #define …..   обмежити

директивою #undef.  

  1.  Включення файлів:

      #include <file>     для файлу з системної бібліотеки  (#include <stdio.h> )

      #includefile”      для довільного файлу  (вказується повний шлях)

  1.  Умовна компіляція:

     #if <ціл-конст-вираз>

           … text-1 ….

      #else

           text-2 …

     #endif

Якщо значення виразу 0, то компілятор не обробляє  перший текст. У супротивному пропускається другий текст.  


 

А также другие работы, которые могут Вас заинтересовать

1043. Традиционные русские рукопашные состязания и их особенности на Тамбовщине 502 KB
  Генезис и эволюция рукопашных состязаний русских. Особенное и общее в формах традиционных рукопашных состязаний русских и других народов, региональные особенности на Тамбовщине. Исторические формы состязаний и региональные особенности в Тамбовской губернии. Борьба с формированием предварительного захвата. Виды рукопашных состязаний в Тамбовской губернии в конце XIX - первой половине XX веков. Реконструкция конкретно-исторической модели. Генезис и эволюция рукопашных состязаний русских.
1044. Счётчики. Синхронный счётчик на D-триггерах и К=10 341 KB
  Синхронный счётчик на D-триггерах и К=10. Синхронный счётчик на JK-триггерах и К=10. Создание субблока счётчика. Счётчик с Ксч=100 на D- и JK- триггерах. Овладение методом синтеза синхронных счетчиков, анализ работоспособности проектируемых схем.
1045. Міжнародний кримінальний суд: структура та компетенція 458.5 KB
  Історичні передумови створення та функціонування постійно діючої інституції у сфері міжнародного кримінального судочинства. Зародження ідеї та перші спроби створення постійно діючої інституції у сфері міжнародної кримінальної юстиції. Створення військових трибуналів ad hoc як основний етап становлення міжнародної кримінальної юстиції.
1046. Картирование рудных полей и месторождений 446.5 KB
  Формационная принадлежность околорудных и предрудных метасоматитов. Взаимосвязь между магнитной восприимчивостью вмещающих пород и характером их метасоматического изменения. Критерии обнаружения богатых рудных столбов в пределах сульфидно-кварцевых жил изучаемой площади.
1048. Определение расхода воздуха и изобарно-изотермического потенциала для системы каменный уголь – карбонат магния 422.5 KB
  Определение расхода воздуха и объема продуктов сгорания. Построение графика зависимости T=f(∆G). Определение изобарно-изотермического потенциала (энергии Гиббса).
1049. Земледелие Западной Сибири 500 KB
  Гумус и плодородие почвы. Приемы защиты почвы от эрозии в системе земледелия Западной Сибири. Приемы накопление, сохранения и рационального использования влаги в земледелия региона. Особенности и характеристика основных звеньев системы земледелия для степной зоны Западной Сибири. Технология возделывания овса в подтаежной зоне Западной Сибири с учётом биоло-гических особенностей культуры и природно-климатических условий зоны. Технологическая схема производства подсолнечного масла.
1050. Организация литейного производства на ОАО МК ОРМЕТО ЮУМЗ 347 KB
  Расстановка рабочей силы по рабочим местам, распределение работ, обеспечение рабочих мест. Факторы, влияющие на выбор способа изготовления отливки. Расчет количества подъёмно-транспортного оборудования. Охлаждение отливок. Выбивка отливок из формы. Используемое оборудование.
1051. Методические указания по определению экономической эффективности научно-исследовательских работ и новой техники 458 KB
  Метод оценки эффективности инвестиций исходя из сроков их окупаемости. Метод сравнительной эффективности приведенных затрат. Расчет ожидаемого годового экономического эффекта на основании анализа использования рабочего времени укладчиц и контролеров готовой продукции на хлебозаводе.