МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||||||||
Директиви препроцесора.Мета роботи: отимати вміння та практичні навички використання основних директив препроцесора в програмах мовою С.
Теоретична частина Препроцесор мови С Препроцесор мови С - це програма, що виконує обробку вхідних даних для іншої програми. Препроцесор мови С переглядає програму до компілятора, заміняє абревіатури в тексті програми на відповідні директиви, відшукує і підключає необхідні файли, може впливати на умови компіляції. Директиви препроцесора мови С в дійсності не є частиною мови С. Препроцесор містить у собі наступні директиви:
Всі директиви препроцесора починаються із символу #. Директива #Define Директива #define вводить макровизначення або макрос. Загальна форма директиви наступна: #define ім'я_макросу послідовність_символів. Послідовність_символів називають ще рядком заміщення. Коли препроцесор знаходить у вихідному тексті програми ім'я_макросу (надалі будемо говорити просто макрос), він заміняє його на послідовність_ символів. Будь-які входження макросу, виявлені в рядках символів, символьних константах або в коментарях, заміні не підлягають. Можна скасувати визначення макросу директивою #undef: #undef ім'я_макросу Даний рядок видаляє кожний раніше введений рядок заміщення. Визначення макросу губиться і ім'я_макросу стає невизначеним. Приклад: #define МАХ 100 Це значення буде підставлятися щораз замість макросу МАХ у вихідному файлі. Можна також використовувати макрос замість строкової константи: Якщо послідовність символів у директиві #define не міститься в одному рядку, то можна поставити наприкінці рядка символ \ і продовжувати послідовність на іншому рядку: #define STRING "Ця послідовність символів не \ уміщається на одному рядку, ми використовуємо два рядки" Серед програмістів прийнята угода, що для імені макросу використовуються, як правило, ідентифікатори з прописних букв. Ця угода дозволяє легко знаходити в тексті програми макроси. Також, краще всі директиви #define виносити в початок файлу або в окремий файл заголовку. Найбільше часто директива #define використовується для визначення імен "магічних чисел", що зустрічаються в програмі. Наприклад, якщо ви задаєте один розмір масивів у програмі й у деяких підпрограмах використовуєте масиви того ж розміру, те більш доцільно визначити розмір масиву директивою #define і використовувати в оголошеннях масивів цей макрос. Приклад: #define МАХ 100 float bа1аnсе[МАХ], sа1dо[МАХ]: Директива #define має ще одну важливу особливість: макрос може мати аргументи. Щоразу, коли відбувається заміна, аргументи також заміняються на ті, котрі зустрічаються в програмі. Ілюстрацією може служити наступний приклад: #define МIМ(а,b) ((а)<(b))?(а):(Ь) … printf(" Мінімум із х та у %d, МІN(х,у)); printf(“ Мінімум із а та b %d, МІN(m,n)); … Коли програма буде компілюватися, у вираз, визначений як МІN(а, b), будуть підставлені відповідно х та у або m та n. Аргументи а та b в круглих дужках, тому що замість них може підставлятися деякий вираз, а не просто ідентифікатори, наприклад printf(“Мінімум %d, МІN(х*х, х*х*х));
|
||||||||||||||
|