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

3 чел.

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

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

спочатку «склеюються рядки », тобто рядок, що закінчується символом ‘\’ з’єднується з наступним (просто відкидається пара  символів ‘\’ та ‘\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, то компілятор не обробляє  перший текст. У супротивному пропускається другий текст.  


 

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

287. Сборка и настройка персонального компьютера 2.3 MB
  Системные настройки для оптимизации работы жесткого диска. Установка операционной системы Windows 7. Заправка картриджа лазерного принтера. Порядок сборки системного блока. Способы чистки дозирующего лезвия
288. Способи організації екстремального туризму 523 KB
  Сутність та особливості екстремального туризму. Виникнення та розвиток екстремального туризму в Україні. Туристичний маршрут Невгамовні річки карпат. Повітряні, наземні та екзотичні види екстремального туризму.
289. Кладка столбов и сварка трубопроводов 2.48 MB
  Технология кладки столбов по трёх рядной системе перевязки швов 2*2. Организация рабочего места электросварщика. Технология сборки и сварки трубопроводов из нержавеющей стали. Контроль качества сварных соединений трубопроводов на объектах.
290. Исследование рынка экспресс-доставки и разработка маркетингового плана ООО Рапида 2.27 MB
  Теория маркетинговых исследований и особенности изучения спроса на транспортные услуги. Исследование спроса на услуги экспресс-доставки рынка города Рыбница. Бизнес-модель создания предприятия по экспресс-доставке грузов для рынка города Рыбница - ООО Рапида
291. Синтез двухмерных фрактальных изображений 652 KB
  Построение плоских фрактальных изображений с помощью фрактального генератора, исследование их свойства, а также с помощью программы LSE создание фрактал в виде салфетки.
292. Визначення оптимальних обсягів виробництва консервованої продукції продуктовою компанією за допомогою професійного пакету MS Office 1.16 MB
  Визначення параметрів та факторів, накладання умов на фактори та параметри. Формалізація та ідентифікація обчислювального процесу. Вибір методу розв’язання та обрання програмного забезпечення.
293. Гиперссылки и управляющие кнопки. Создание презентации Проверь себя 580.5 KB
  Анимированные эффекты перехода смены слайдов по щелчку мыши. Создание презентации Проверь себя. Дополнение ее слайдами с гиперсылками в виде текста и картинок. Настройка навигации программы для создания презентаций.
294. Характеристика эксплуатации газодобывающего предприятия Чайковское ЛПУ МГ 1.48 MB
  Должностная инструкция инженера по эксплуатации оборудования газовых объектов. Фотография рабочего дня инженера по эксплуатации оборудования газовых объектов. План-график проведения ППР основного и вспомогательного оборудования.
295. Проектирование композитных трёхмерных объектов, сцен и разработка приложения интерактивной компьютерной графики 566.5 KB
  Описание алгоритма и исходного кода программы проектирования композитной трехмерной сцены (замок) и разработки приложения интерактивной компьютерной графики. Разработана и отлажена программа, реализующая представленные алгоритмы на языке С++ с использованием библиотеки OpenGL.