Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Директиви препроцесора.

Мета роботи: отимати вміння та практичні навички використання основних директив препроцесора в програмах мовою С.

 

Теоретична частина

Препроцесор мови С

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

 

# define # undef # include # if # ifdef # ifndef # else # elif # endif # line   # error # pragma # Визначення макросу Скасування визначення макросу Включення об'єкта-заголовка Компіляція, якщо вираз істинний Компіляція, якщо макрос хибний Компіляція, якщо макрос не визначений Компіляція, якщо вираз в if не дійсний Складена директива else/if Закінчення групи компіляції за умовою Заміна новим значенням номера рядка або імені вихідного файлу Форматування помилок трансляції Дія визначається реалізацією Null - директива
Операції Призначення
# ## defined Додання операнду форми рядка символів Склеювання лексем Представлення # ifdef у форма виразу

Всі директиви препроцесора починаються із символу #.

Директива #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(х*х, х*х*х));




Переглядів: 951

<== попередня сторінка | наступна сторінка ==>
Варіант 4. | Директива #еrrоr

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.