Студопедия

КАТЕГОРИИ:


Архитектура-(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)

 
 


dec hex char dec hex char dec hex char
        2E .   5C \
        2F /   5D ]
              5E ^
              5F _
                '
                a
                b
    звонок           c
                d
                e
  A перевод строки           f
  B             g
  C     3A :     h
  D возврат каретки   3B ;     i
  E     3C <   6A j
  F     3D =   6B k
        3E >   6C l
        3F ?   6D m
          @   6E n
          A   6F o
          B     p
          C     q
          D     r
          E     s
          F     t
          G     u
  1A       H     v
  1B       I     w
  1C     4A J     x
  1D     4B K     y
  1E     4C L   7A z
  1F     4D M   7B {
    пробел   4E N   7C ¦
    !   4F O   7D }
    ''     P   7E ~
    #     Q   7F del
    $     R      
    %     S      
    &     T      
    '     U      
    (     V      
    )     W      
  2A *     X      
  2B +     Y      
  2C ,   5A Z      
  2D -   5B [      

 

 

Таблица 2.7.

Кодовая таблица 866 – MS-DOS

(символы с кодами 127-255)

dec hex char dec hex char dec hex char dec hex char dec hex char dec hex char
    А     Ц   AC м   C1   D6   EB ы
    Б     Ч   AD н   C2   D7   EC ь
    В     Ш   AE о   C3   D8   ED э
    Г     Щ   AF п   C4   D9   EE ю
    Д   9A Ъ   B0 -   C5   DA   EF я
    Е   9B Ы   B1 -   C6   DB   F0 Ё
    Ж   9C Ь   B2 -   C7   DC   F1 ё
    З   9D Э   B3   C8   DD   F2
    И   9E Ю   B4   C9   DE   F3
    Й   9F Я   B5   CA   DF   F4
  8A К   A0 а   B6   CB   E0 р   F5
  8B Л   A1 б   B7   CC   E1 с   F6 +
  8C М   A2 в   B8   CD   E2 т   F7
  8D Н   A3 г   B9   CE   E3 у   F8  
  8E О   A4 д   BA   CF   E4 ф   F9  
  8F П   A5 е   BB   D0   E5 х   FA
    Р   A6 ж   BC   D1   E6 ц   FB
    С   A7 з   BD   D2   E7 ч   FC n
    Т   A8 и   BE   D3   E8 ш   FD  
    У   A9 й   BF   D4   E9 щ   FE
    Ф   AA к   C0   D5   EA ъ   FF  
    Х   AB л                        

 

 

Таблица 2.8.

Кодовая таблица 1251 – MS Windows

(символы с кодами 127-255, даны выборочно)

 

dec hex char dec hex char dec hex char dec hex char dec hex char dec hex char  
              AC     C1 Б   D6 Ц   EB л  
              AD -   C2 В   D7 Ч   EC м  
              AE ®   C3 Г   D8 Ш   ED н  
              AF Ï   C4 Д   D9 Щ   EE о  
        9A     B0 º   C5 Е   DA Ъ   EF п  
        9B     B1 ±   C6 Ж   DB Ы   F0 р  
        9C     B2   C7 З   DC Ь   F1 с  
        9D     B3 i   C8 И   DD Э   F2 т  
        9E     B4 r   C9 Й   DE Ю   F3 у  
        9F     B5 μ   CA К   DF Я   F4 ф  
  8A     A0     B6   CB Л   E0 а   F5 х  
  8B     A1 Ў   B7 .   CC М   E1 б   F6 ц  
  8C     A2 ў   B8 ë   CD Н   E2 в   F7 ч  
  8D     A3 J   B9   CE О   E3 г   F8 ш  
  8E     A4     BA ε   CF П   E4 д   F9 щ  
  8F     A5 ¤   BB »   D0 Р   E5 е   FA ъ  
        A6 ¦   BC j   D1 С   E6 ж   FB ы  
        A7 §   BD S   D2 Т   E7 з   FC ь  
        A8 Ё   BE s   D3 У   E8 и   FD э  
        A9 ©   BF ï   D4 Ф   E9 й   FE ю  
        AA Є   C0 А   D5 Х   EA к   FF я  
        AB « 䦋㌌㏒ 䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü               䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü 䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü 䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü
                                           

 

 




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 304; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.035 сек.