Мова С++ Директиви препроцесора
#include #include "my_file. h" Умовні директиви #ifndef BOOKSTORE_H #define BOOKSTORE_H /* содержимое файла bookstore. h */ #endif
Препроцесор С / С ++ (англ. Preprocessor, предобработка) - програма, що готує код програми на мові C / C ++ до компіляції. Препроцесором виконуються наступні дії: заміна відповідних диграфів і диграфів на еквівалентні символи «#» і «» ; видалення екранованих символів переведення рядка; заміна рядкових і блокових коментарів порожніми рядками (з вилученням оточуючих пропусків і символів табуляції); вставка (включення) вмісту довільного файлу (#include); макропідстановки (#define); умовна компіляція (#if, #ifdef, #elif, #else, #endif); виведення повідомлень (#warning, #error).
Директивою (командним рядком [1]) препроцесора називається рядок у вихідному коді, що має наступний формат: # ключевое_слово параметри: Список ключових слів: define - створення константи або макросу; undef - видалення константи або макросу; include - вставка вмісту вказаного файлу; if - перевірка істинності вираження; ifdef - перевірка існування константи або макросу; ifndef - перевірка не існування константи або макросу; else - гілка умовної компіляції при хибності вираження if; elif - перевірка істинності іншого виразу; коротка форма запису для комбінації else і if; endif - кінець гілки умовної компіляції; line - вказівка імені файлу і номера поточного рядка для компілятора; error - вивід повідомлення і зупинка компіляції; warning - вивід повідомлення без зупинки компіляції; pragma - вказівка дії, залежного від реалізації, для препроцесора або компілятора; якщо ключове слово не вказано, директива ігнорується; якщо вказано неіснуюче ключове слово, виводиться повідомлення про помилку і компіляція переривається.
Включення в текст програми інформації для відлагодження int main() { #ifdef DEBUG cout << «Початок виконання main()n"; #endif string word; vector text; while ( cin >> word ) { #ifdef DEBUG cout << "Прочитано слово: " << word << "n"; #endif text. push_back(word); } //. . .
Якщо константа DEBUG не визначена int main() { string word; vector text; while ( cin >> word ) { text. push_back(word); } //. . . Якщо константа DEBUG визначена int main() { main()n"; cout << «Початок виконання» ; string word; vector text; while ( cin >> word ) { cout <<"Прочитано слово: "<