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, то компілятор не обробляє  перший текст. У супротивному пропускається другий текст.  


 

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

81488. Диагностическое значение биохимического анализа желудочного и дуоденального сока. Дать краткую характеристику состава этих соков 109.1 KB
  Анализ желудочного сока является очень важным методом исследования больных с заболеваниями желудка кишечника печени желчного пузыря крови и пр Составная часть Единицы СИ Азот: небелковый 143 343 ммоль л мочевины и аммиака 499 999 ммоль л аминокислот 143 57 ммоль л Хлориды 1551 ммоль л Свободная хлористоводородная кислота 20 ммоль л Мочевая кислота 476 1189 мкмоль л Калий 56 353 мэкв л ммоль л Натрий 313 1893 мэкв л ммоль л Общая кислотность 4060 ммоль л Свободная соляная кислота 2040 ммоль л Связанная соляная кислота...
81489. Протеиназы поджелудочной железы и панкреатиты. Применение ингибиторов протеиназ для лечения панкреатитов 115.09 KB
  Протеолитические ферменты трипсин химотрипсин эластаза карбоксипептидазы А и В выделяются панкреацитами в неактивном состоянии что предотвращает самопереваривание клеток. Трипсин. Трипсиноген и трипсин получены в кристаллическом виде полностью расшифрована их первичная структура и известен молекулярный механизм превращения профермента в активный фермент. В опытах in vitro превращение трипсиногена в трипсинкатализируют не только энтеропептидаза и сам трипсин но и другие протеиназы и ионы Са2.
81490. Трансаминирование: аминотрансферазы; коферментная функция витамина В6. Специфичность аминотрансфераз 144.39 KB
  Из реакции переноса NH2 наиболее важны реакции трансаминирования . 346 относится к альдиминам или шиффовым основаниям во время реакции аминокислота 1 вытесняет остаток лизина и образуется новый альдимин 2. На второй частиреакции те же стадии протекают в противоположном направлении: пиридоксаминфосфат и вторая 2кетокислота образуют кетимин который иэомеризуется в альдимин. Механизм реакции трансаминирования открыт в 1937 году советскими учеными А.
81491. Аминокислоты, участвующие в трансаминировании; особая роль глутаминовой кислоты. Биологическое значение реакций трансаминирования. Определение трансаминаз в сыворотке крови при инфаркте миокарда и болезнях печени 119.25 KB
  Определение трансаминаз в сыворотке крови при инфаркте миокарда и болезнях печени. Чрезвычайно широкое распространение трансаминаз в животных тканях у микроорганизмов и растений их высокая резистентность к физическим химическим и биологическим воздействиям абсолютная стереохимическая специфичность по отношению к Lаминокислотам а также высокая каталитическая активность в процессах трансаминирования послужили предметом детального исследования роли этих ферментов в обмене аминокислот. Таким образом трансаминазы катализируют опосредованное...
81492. Окислительное дезаминирование аминокислот; глутаматдегидрогеназа. Непрямое дезаминирование аминокислот. Биологическое значение. 248.67 KB
  Непрямое дезаминирование аминокислот. Дезаминирование аминокислот реакция отщепления αаминогруппы от аминокислоты в результате чего образуется соответствующая αкетокислота безазотистый остаток и выделяется молекула аммиака. Безазотистый остаток используется для образования аминокислот в реакциях трансаминирования в процессах глюконеогенеза кетогенеза в анаплеротических реакциях для восполнения убыли метаболитов ОПК в реакциях окисления до СО2 и Н2О.
81493. Основные источники аммиака в организме. Роль глутамата в обезвреживании и транспорте аммиака. Глутамин как донор амидной группы при синтезе ряда соединений 184.57 KB
  Роль глутамата в обезвреживании и транспорте аммиака. Основные источники аммиака Источник Процесс Ферменты Локализация процесса Аминокислоты Непрямое дезаминирование основной путь дезаминирования аминокислот Аминотрансферазы ПФ Глутаматдегидрогеназа ND Все ткани Окислительное дезаминирование глутамата Глутаматдегидрогеназа ND Все ткани Неокислительное дезаминирование Гис Сер Тре ГистидазаСерин треониндегидратазы ПФ Преимущественно печень Окислительное дезаминирование аминокислот малозначимый путь дезаминирования Оксидаза...
81495. Биосинтез мочевины. Связь орнитинового цикла с ЦТК. Происхождение атомов азота мочевины. Нарушения синтеза и выведения мочевины. Гипераммонемии 382.01 KB
  Мочевина - основной конечный продукт азотистого обмена, в составе которого из организма выделяется до 90% всего выводимого азота. Экскреция мочевины в норме составляет 25 г/сут. При повышении количества потребляемых с пищей белков экскреция мочевины увеличивается.
81496. Обмен безазотистого остатка аминокислот. Гликогенные и кетогенные аминокислоты. Синтез глюкозы из аминокислот. Синтез аминокислот из глюкозы 162.72 KB
  В ходе катаболизма аминокислот происходит отщепление аминогруппы и выделение аммиака. Другим продуктом дезаминирования аминокислот служит их безазотистый остаток в виде α-кетокислот. Катаболизм аминокислот происходит практически постоянно. За сутки в норме в организме человека распадается примерно 100 г аминокислот, и такое же количество должно поступать в составе белков пищи.