Файл: Pobegaylo_A._C_Cplus_dlya_studenta.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.12.2020

Просмотров: 4270

Скачиваний: 28

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Глава 9. Директивы препроцессора 

131 

Здесь 

шаблон

 —  это  последовательность  лексем,  содержащая  па-

раметр, которому предшествует символ 

#

. При обработке макро-

команды  пробелы,  следующие  до  и  после  шаблона,  удаляются.  
А при преобразовании шаблона в строку несколько пробелов ме-
жду  лексемами  заменяются  одним  пробелом.  Кроме  того,  при 
использовании оператора 

#

 нужно учитывать следующие ограни-

чения: 

 

порядок вычисления нескольких операторов 

#

 и 

##

 в шаблоне 

не определен; 

 

если  шаблон  содержит  лексемы,  которые  являются  строками 
языка программирования C, и эти лексемы следуют после па-
раметра, то они соединяются с ним как строки. 

Например, определим макрокоманду: 

  #define print_str(x) printf("%s", #x "\n") 

Используя  эту  макрокоманду,  вывести  на  печать  строку  можно 
следующим образом: 

  print_str(This is a string); 

Оператор 

#

 используется для упрощения вывода на печать строк 

в  формате  языка  программирования  C.  Например,  при  помощи 
макрокоманды 

print_str

  можно  вывести  на  печать  следующую 

строку: 

  print_str("\This is a string/"); 

9.11. Оператор 

##

 

Оператор 

"##"

  служит  для  соединения  двух  параметров  макро- 

команды  в  одну  последовательность  символов.  Такая  макроко-
манда должна иметь следующий вид: 

  #define имя(список_параметров) шаблон 

Здесь 

шаблон

 —  это  последовательность  лексем,  содержащая  два 

параметра макрокоманды, которые соединены символами 

##

. На-

пример, определим макрокоманду: 

  #define var(type, s, var) type##s var 


background image

Часть I. Язык программирования С 

132 

Используя  эту  макрокоманду,  можно  определить  указатель  на 
целочисленную переменную: 

  var(int, *, n); 

При  использовании  оператора 

##

  нужно  учитывать,  что  порядок 

вычисления  нескольких  таких  операторов  в  шаблоне  макро- 
команды не определен. 

9.12. Предопределенные 
макрокоманды 

Следующие макрокоманды предопределены в препроцессоре и не 
могут быть изменены программистом: 

 

__DATE__

 — строка с датой; 

 

__TIME__

 — строка со временем; 

 

__FILE__

 — строка с именем исходного файла; 

 

__LINE__

 — номер текущей строки; 

 

__STDC__

 — константа, которая равна 1, если компилятор под-

держивает  стандартный  язык  C,  в  противном  случае —  рав-
на 0. 

Например,  следующие  инструкции  распечатывают  значения,  ко-
торые дают эти макрокоманды: 

  printf("Date = %s\n", __DATE__); 
  printf("Time = %s\n", __TIME__); 
  printf("File = %s\n", __FILE__); 
  printf("Line = %d\n", __LINE__); 

 


background image

  

 

 

ЧАСТЬ

 II 

Язык программирования С++ 

Глава 10. 

Дополнения к типам данных языка С 

Глава 11. 

Дополнение к функциям языка C 

Глава 12. 

Пространства имен 

Глава 13. 

Обработка исключений 

Глава 14. 

Классы 

Глава 15. 

Конструкторы и деструкторы 

Глава 16. 

Перегрузка операторов 

Глава 17. 

Наследование классов 

Глава 18. 

Шаблоны функций 

Глава 19. 

Шаблоны классов 

 

 

 

 

 


background image

  

 

 

 

 

 

 

 

 

 

 


background image

  

 
 

Г Л А В А  

10 

 
 
 

Дополнения  

к типам данных языка С 

10.1. Тип данных 

bool

 

В  языке  программирования  C++  введен  новый  встроенный  тип 
данных 

bool

.  Переменная  типа 

bool

  может  принимать  одно  из 

двух значений: 

true

 или 

false

. Например: 

  bool  b = true; 

Объекты  типа 

bool

  неявно  преобразуются  в  объекты  типа 

int

.  

А  именно 

false

  в 

0

  и 

true

  в 

1

.  Обратно,  любое  целое  значение 

может быть явно преобразовано в значение типа 

bool

. А именно 

0

 

в 

false

 и не 

0

 в 

true

. Например: 

  bool  b; 
  b = 0; 
  b = (bool)10; 

10.2. Тип данных 

wchar_t

 

Тип данных 

wchar_t

 является целочисленным типом данных, для 

хранения значений которого используются 2 байта. Следователь-
но, диапазон типа 

wchar_t

 включает значения от 0 до 65 535. 

Тип данных 

wchar_t

 предназначен для хранения широких симво-

лов. Символ называется 

широким

 (wide), если для хранения кода 

этого  символа  требуется  2  байта.  Для  кодировки  символов  раз-

  

 


Смотрите также файлы