Tema_11_Срр.pptx
- Количество слайдов: 12
Мова С++ Лекція 11
Побітові логічні операції «логічне АБО» «логічне І» А В A&B А В A|B 0 0 0 0 1 1 1 0 0 1 1 1 1 «логічне НЕ» «виключаюче АБО» А ~A А В A^B 0 1 0 0 1 1 1 0
char sw=0; sw = sw | 0 x 04; sw = sw | 0 x 01; Виключити 3 -й і 1 -й діоди. Стан планки невідомий vsw = sw & 0 x. FA; //FA 16=111110102 vsw = sw & (~0 x 05); // 0 x 05 =000001012 Змінити стан 4 -го діода на протилежний sw = sw ^ 0 x 08; // 0 x 08 =000010002
Мова С++ Лекція 11 Директиви препроцесора
Директивою препроцесора називається рядок у вихідному коді, що має наступний формат: # ключве_слово параметри Список ключових слів: define - створення константи або макросу; undef - видалення константи або макросу; include - вставка вмісту вказаного файлу; if - перевірка істинності вираження; ifdef - перевірка існування константи або макросу; ifndef - перевірка не існування константи або макросу; else - гілка умовної компіляції при хибності вираження if; elif - перевірка істинності іншого виразу; коротка форма запису для комбінації else і if; endif - кінець гілки умовної компіляції; line - вказівка імені файлу і номера поточного рядка для компілятора; error - вивід повідомлення і зупинка компіляції; warning - вивід повідомлення без зупинки компіляції; pragma - вказівка дії, залежного від реалізації, для препроцесора або компілятора; якщо ключове слово не вказано, директива ігнорується; якщо вказано неіснуюче ключове слово, виводиться повідомлення про помилку і компіляція переривається.
Директива #include включає в програму вміст зазначеного файлу. Файл може бути зазначено двома способами: #include <some_file. h> #include "my_file. h" Умовна директива #ifndef перевіряє, чи не було значення BOOKSTORE H визначено раніше. #ifndef BOOKSTORE_H #define BOOKSTORE_H //визначає константу препроцесора BOOKSTORE_H /* вміст файла bookstore. h */ #endif
включення в текст програми налагоджувальної інформації int main() { #ifdef DEBUG cout << "Начало выполнения main()n"; #endif string word; vector<string> text; while ( cin >> word ) { #ifdef DEBUG cout << "Прочитано слово: " << word << "n"; #endif text. push_back(word); } //. . . }
Якщо константа DEBUG не визначена int main() { string word; vector<string> text; while ( cin >> word ) { text. push_back(word); } //. . . Якщо константа DEBUG визначена int main() { main()n"; cout << «Початок виконання» ; string word; vector<string> text; while ( cin >> word ) { cout <<"Прочитано слово: "<<word << "n"; text. push_back(word); } //. . .
Приклади Приклад. Просте виключення секції коду. #if 0 // виключена секція коду #endif Значення виразів в директивах #if і #elif повинні бути цілими константами. У виразах не можна використовувати операцію sizeof. У якості вираження в директивах #if і #elif можна використовувати оператор defined. Він перевіряє, чи був визначений макрос. Приклад. Вибір між секціями коду. #if defined(DEBUGGING) space = 1000; #else space = 10; #endif Директиви #ifdef і #ifndef є скороченням для директив #if defined і #if! defined відповідно.
Приклади Приклад. Запобігання багаторазової трансляції заголовка sample. h. #ifndef __SAMPLE_H__ #define __SAMPLE_H__ // тут зміст файлу #endif Якщо файл sample. h виявиться багаторазово включеним у вихідний код програми, то при такому "обрамленні" його вмісту буде відтранслювувати лише перше входження заголовного файлу. Зауваження. В Visual C ++ та ж мета досягається застосуванням директиви #pragma once. Директива #error викликає під час компіляції повідомлення про помилку. #error повідомлення_про_помилку
Директива #error викликає під час компіляції повідомлення про помилку. #error повідомлення_про_помилку Директива #line За допомогою директиви #line можна змінити внутрішній лічильник рядків компілятора і ім'я компільованого файлу. Вона має такий вигляд #line номер_рядка ["ім'я_файлу"]
константи, які автоматично визначаються компілятором #idfef __cplus // компіляція С++ програми extern "C"; #endif int main(int, int); if ( element_count == 0 ) cerr << "Помилка. Файл: " << __FILE__ << " Рядок: " << __LINE__ << "element_count не може бути 0"; константи __DATE__ і __TIME__ містять дату і час компіляції. Вимагається включення в програму директиви #include <assert. h>
Tema_11_Срр.pptx