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


 

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

27931. Коэффициенты корректирования и кратности. Их назначение 49.5 KB
  4Системы вознаграждения работников АТП Ни одно АТП не может обеспечить достаточно высокий уровень профессиональной надежности работников если оно не выплачивает денежное вознаграждение по конкурентоспособным ставкам и не имеет шкалы оплаты стимулирующей высокую эффективность труда. В ходе мотивации особое внимание уделяется организации заработной платы денежного вознаграждения выплачиваемого предприятием работнику. Система вознаграждения отдельного работника в значительной степени влияет на его поведение поскольку это своего рода...
27932. Расчёт потребности АТП в смазочном масле 42.5 KB
  По содержанию перспективное планирование предприятия в новых условиях обычно включает долгосрочный прогноз на 515 лет обоснованное вероятностное предположение об изменениях в структуре и запросах рынка технике и технологии производства и их социальноэкономических последствиях план развития на 35 лет с разбивкой по годам и целевые программы решения важнейших проблем. Оперативное планирование заключается в разработке на основе годовых планов конкретных производственных заданий на короткие промежутки времени как для предприятия в...
27933. Технология очистки воды после мойки а/м для повторного использования 115.5 KB
  Размер запасов в основном определяется объемом производства транспортных услуг и временем между двумя поставками материальных ресурсов. Важность этой задачи в определенной степени обусловливается тем что сверхнормативные запасы материальных ресурсов вызывают финансовые затруднения снижают качество хранения материалов требуют дополнительных складских помещений. Образование значительных запасов сопряжено не только с появлением дополнительных складских расходов но и с риском устаревания материальных ресурсов а также с упущенной выгодой...
27934. Поточный метод. Дефектовка и ремонт пары «клапан-седло» газораспределительного механизма 42.5 KB
  2При расчетном числе рабочих постов ТО1 Д1 = 3 для одиночных а м 2 автопоездов ТО2 Д2 = 4 для одиночных 3 автопоездов 3Расчетное число линий обслуживания – целое число или меньше целого числа с отклонением не более 008 на 1 линию: 0 mцел – mрасч mцел= 008 При соблюдении всех этих условий для зон ТО экономически целесообразно является применение поточное производство с применением конвейера или других механизмов для принудительного перемещения автомобилей. Число поточных линий: m = такт ритм ритм = 60 ТсмС Nicфи фи – коэфт...