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


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


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


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


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


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


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


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


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


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



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






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

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

 

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

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

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

 

# 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(х*х, х*х*х));




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

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

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

 

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


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