КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Гдеiostreamуже не является именем файла, а означает просто идентификатор, по которому компилятор находит требуемые файлы
· организовывать условную компиляцию, т.е. в зависимости от заданных в командной строке или среде параметров получать различный программный код. Условная компиляция также помогает повышать мобильность программ. Общий вид секции условной компиляции: #if логическое_выражение_1 TRUE-секция_1 #else #elif логическое_выражение_2 TRUE-секция_2 … #elif логическое_выражение_N TRUE-секция_N #else FALSE-секция #endif
[6] * Заголовочный файл может содержать директивы #include, поэтому иногда трудно понять, какие же конкретно заголовочные файлы включены в данный исходный текст, и некоторые заголовочные файлы могут оказаться включенными несколько раз. Избежать этого позволяют условные директивы препроцессора. Рассмотрим пример: #ifndef BOOK_H #define BOOK_H /* содержимое файла book.h */ #endif Условная директива #ifndef проверяет, не было ли значение BOOK_H определено ранее. (BOOK_H – константа препроцессора) и (если – нет) препроцессор обрабатывает последующие строки вплоть до директивы #endif. В противном случае он пропускает строки от #ifndef до # endif. Директива #define BOOK_H определяет константу препроцессора BOOK_H. Поместив эту директиву непосредственно после директивы #ifndef, мы можем гарантировать, что содержательная часть заголовочного файла book.h будет включена в исходный текст только один раз, сколько бы раз ни включался в текст сам этот файл.
Распространенным применением условных директив препроцессора является включение в текст программы отладочной информации (#ifdef... #endif) и определение некоторой препроцессорной константы (например, DEBUG). При наличии директивы с определением константы выполняются условные директивы, помещенные в тексте программы, при отсутствии константы (ее определение можно закрыть символом комментария) – нет.
Например: // #define DEBUG int main() { #ifdef DEBUG cout << "Начало выполнения main()\n"; #endif
string word; while (cin >> word) { #ifdef DEBUG cout << "Прочитано слово: " << word << "\n"; #else.......... #endif //……….. } //... return 0; }
Разделители Компилятор, выполняя лексический анализ программы на языке С++, для распознания начала и (или) конца лексем использует разделители. Функции разделителей: · обозначение места начала и конца лексем; · исключение из компиляции всех избыточных символов, не входящих в состав лексем. Разделители лексем: • пробельные разделители • знаки операций (они сами есть лексемы) • знаки пунктуации (они сами есть лексемы).
Пробельные разделители К пробельным разделителям относятся неизображаемые символы и комментарии. Пробельные разделители игнорируются и не обрабатываются компилятором.
В общем случае пробельных разделителей может быть произвольное количество (даже ни одного). Однако хороший стиль предполагает наличие хотя бы одного такого символа после каждой лексемы.
Комментарий не является лексемой и трактуется компилятором как пробельный разделитель. Многострочный комментарий отмечается символами "/*" в начале и "*/" в конце выделяемого текста. Признаком однострочного комментария являются символы "//" в начале строки программы. Однострочный комментарий удобно использовать как пояснение к тексту оператора. Например: int a; // текст, поясняющий назначение переменной Комментарии можно использовать и при отладке программы: для исключения из компиляции некоторого фрагмента программы. Символы комментария необходимо отделять от текста программы пробелом. В противном случае, текст программы может неправильно интерпретироваться компилятором. Например, запись без пробелов: int i = j //*деление на k*/k
+m; будет распознана неправильно, как int i = j + m; (как имеющая однострочный комментарий), int i = j / /*деление на k*/ k +m; будет распознана правильно, как int i = j / j / k+m; (как имеющая многострочный комментарий).
Комментарии не могут быть вложенными, т.к. в тексте однострочного комментария символы многострочного комментария/*игнорируются (воспринимаются как обычные символы). Точно также игнорируются (воспринимаются как обычные) в тексте многострочного комментария символы однострочного комментария //. Таблица 2.6. ASCII-Коды (символы с кодами 0-127)
Таблица 2.7. Кодовая таблица 866 – MS-DOS (символы с кодами 127-255)
Таблица 2.8. Кодовая таблица 1251 – MS Windows (символы с кодами 127-255, даны выборочно)
Дата добавления: 2015-06-25; Просмотров: 304; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |