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


 

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

44885. Веберовская категория “идеального типа”, возможности ее применения в социологическом анализе 15.49 KB
  Веберовская категория €œидеального типа€ возможности ее применения в социологическом анализе. Вебер использует понятие идеального типа. Вебер предполагал что социологи отбирают в качестве характеристик идеального типа определенные аспекты поведения или институтов которые доступны для наблюдения в реальном мире и преувеличивают их до форм логически понятной интеллектуальной конструкции. Например конкретные бюрократические организации могут не совпадать в точности с элементами идеального типа бюрократии однако знание этого идеального...
44886. Решения по результатам диагностики 26.3 KB
  Решения по результатам диагностики Техническая оценка участков трубопровода должна включать в себя следующие этапы: анализ информации содержащейся в техническом паспорте и банке данных; техническое обследование участка анализ результатов; определение степени опасности дефектов; оценка общего напряженнодеформированного состояния участка и его отдельных мест; оценка работоспособности участка; принятие решений о дальнейшей эксплуатации или ремонте и о технических мероприятиях по восстановлению несущей способности участка. На...
44887. Gesunde Ernährung im Job fällt vielen schwer 25.5 KB
  Den meisten bleibt bei der rbeit schlicht keine Zeit in Ruhe zu essen ht eine Umfrge ergeben. Die Kntine ht ml wieder Nudeln mit Tomtensoße der nächste Imbiss ist ein Döner und Zeit fürs Essen bleibt sowieso kum der Chef drängt schon mit dem nächsten Projekt. So oder so ähnlich geht es vielen Berufstätigen in Deutschlnd.
44888. Политическая жизнь Англии 40.5 KB
  Лидер консерваторо вБенджамин Дизраэли слыл одним из самых ловких политиков страны. внес в парламент законопроект о расширении избирательного права Дизраэли будучи в оппозиции провалил его. Несмотря на большие заслуги Дизраэли перед страной кичливые ториаристократы долгое время не признавали его считая выскочкой Дизраэли происходил из еврейской семьи принявшей христианство. Но по мере укрепления партии авторитет Дизраэли возрастал в 1876 г.
44889. «Гнездо» Аксаковых. Творческий путь С.Т. Аксакова, место и значение его творчества в истории русской литературы 29 KB
  Гнездо Аксаковых. Аксакова место и значение его творчества в истории русской литературы. Аксаков Сергей Тимофеевич 17911859 его сыновья: Константин 18171860 Иван 18231886. Аксаков родился в Уфе в старинной дворянской семье отец – чиновник мать – дочь наместника.
44890. Новое время. Европа в начале нового времени 14.19 KB
  Новое время неразрывно связывается с утверждением €œбуржуазным индустриальным прогрессомâ€. В последнее время многие историки склоняются к мнению что нельзя искусственно отрывать от буржуазной цивилизации такие явления как великие географические открытия реформация и гуманизм научная революция которые дали толчок к зарождению буржуазии.: ранее новое время когда капитализм только зарождался и существовал в виде одного из укладов жизни.
44891. Методика формирования и развития системы понятий о химическом элементе 23.19 KB
  Цель изучения химических производств показать учащимся как достижения науки используются для практических нужд отразить роль науки как движущей силы производства и прогресса. Изучение химических производств позволяет существенно усилить экологическую сторону обучения химии раскрыть возможность реализации и требований экологической безопасности при грамотной организации производства что является важной воспитательной задачей курса химии средней школы. Структура системы понятий об основах химического производства. На этом основании можно...
44893. Понятие ОМ. Общественное мнение и паблицитный капитал как результаты PR-деятельности 20.26 KB
  Общественное мнение и паблицитный капитал как результаты PRдеятельности Общественное мнение –- это специфическое проявление общественного сознания выражающееся в оценках как в устной так и в письменной форме и характеризующее явное отношение групп общественности к актуальным проблемам действительности представляющим общественный интерес. Для PRдеятельности Общественное мнение его преобразование изменение в нужном для субъекта PR направлении – это объект и продукт PRдеятельности. Программы деятельности субъектов PR...