Препроцесор. Поняття препроцесора. Директиви препроцесора.
Поки ви втілюєте в життя програмні новорічні фантазії, я спробую додати страшків у казочку . Чисто теоретичні знання.
В спілкуваннях програмістів ви можете почути ці терміни, які вже прочитали в темі заняття. На перший погляд, все виглядає незрозумілим. Але насправді ви з ними вже давно знайомі і працюєте, тож давайте спробуємо розібратись, а головне – зрозуміти.
Почнемо з поняття «препроцесор». Як завжди, розберемо слово «по камінчиках» за значенням.
«Процесор». Як ви його розумієте? З точки зору комп’ютера це його «серце», тобто, основний компонент, який керує всіма частинами і обчисленнями.
Пам’ятаєте одне з правил побудови слів, що стосується закінчень –ер та –ор?
Авіація – авіатор, інженерія – інженер, майструвати – майстер, редакція – редактор.
За аналогією слово «процес» - це якась дія, так? А «процесор» - інструмент для якихось дій.
Наш основний знаток: Вікіпедія каже що процесор – це частина, що реалізує процес переробки інформації і координує роботу периферійних пристроїв. У комп'ютері може бути декілька процесорів, що працюють паралельно — такі комп'ютери називають багатопроцесорними.
А з програмної точки зору: складна логічна програма, що є частиною системи програмування; внутрішня система обробки даних, що перетворює кодовану інформацію, отриману від системи введення.
Йдемо далі . Додаємо до слова «процесор» інший камінчик – префікс «пре». Він означає? Правильно, щось попереду: «перед», як то, наприклад, «передумова» - умова, яка іде попереду якоїсь, можливо, іншої умови.
Аналогічно і з нашим терміном «препроцесор». Його найкраще розглядати як окрему програму, яка виконується перед компіляцією. При запуску програми препроцесор переглядає ваш код зверху вниз, крок за кроком, в пошуку директив. Що означає це слово? Від англ. direction – напрямок, вказівник.
Власне, так і є: директиви - це спеціальні команди, які починаються з символу #, але не закінчуються, як звичні команди, крапкою з комою. Так, правильно, одну директиву ви одразу можете і назвати, ви використовуєте її в кожній програмі. Це, звичайно, #include. Є кілька типів директив, які ми і розглянемо.
Першою буде названа вами директива #include (від англ. іnclude – включити) . Вона має дві форми:
Знайома вже вам #include <filename>, яка повідомляє препроцесору шлях пошуку файла в місцях зберігання системних бібліотек мови С ++. Частіше за все ви будете використовувати цю форму при підключенні заголовків файлів з Стандартної бібліотеки C ++, як, наприклад, #include <windows.h>.
Друга форма #include "filename", яка повідомляє препроцесору шлях до файла в поточній директорії проекту. Якщо його там не виявиться, то препроцесор почне перевіряти системні шляхи і будь-які інші, які ви вказали в налаштуваннях вашої IDE. Ця форма використовується для підключення користувальницьких (ваших) заголовків файлів.
Директиву #define (від англ. define – визначити) можна використовувати для створення макросів - правил, які визначають конвертацію ідентифікатора в зазначені дані. Є два основних типи макросів: макроси-функції і макроси-об'єкти.
Для прикладу, директива
#define NAME NICK
Спрацює таким чином, що в подальшій вашій програмі ідентифікатор NAME скрізь буде замінений на NICK.
Користування цими директивами може мати трошки небезпечні наслідки, тому ми поки що не будемо з ними близько знайомитись. Але задля загальної інформації скажу, що є ще директиви умовної компіляції #ifdef (від скороченого «if defined» - «якщо визначено»), #ifndef(від скороченого «if not defined» -«якщо не визначено») та ін. Бажаючим ознайомитись – Google на допомогу.