Файл: Pobegaylo_A._C_Cplus_dlya_studenta.pdf

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

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

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

Добавлен: 13.12.2020

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

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

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

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

276 

template <class B> struct Box 

  B b; 
}; 
template <template<class R> class S, class T> class Demo 

  S<T> *p; 
public: 
  Demo(S<T> &b): p(&b) {} 
  T get() { return p->b; } 
}; 
 
int main() 

  Box<int> b = {10}; 
  Demo<Box, int> d(b); 
  cout << d.get() << endl; // 10 
 
  return 0; 

Как  и  в  случае  с  шаблонами  функций,  для  параметров  шаблона 
класса,  который  является  параметром  другого  шаблона  класса, 
могут быть установлены значения по умолчанию. 

 


background image

  

 

 

ЧАСТЬ

 III 

Стандартная библиотека 

языка программирования C 

Глава 20. 

Стандартные определения <stddef.h> 

Глава 21. 

Стандартные функции <stdlib.h> 

Глава 22. 

Диагностика ошибок <assert.h> 

Глава 23. 

Функции с переменным количеством парамет-

ров <stdarg.h> 

Глава 24. 

Диапазоны целочисленных данных <limits.h> 

Глава 25. 

Диапазоны чисел с плавающей точкой <float.h> 

Глава 26. 

Обработка ошибок <errno.h> 

Глава 27. 

Математические функции <math.h> 

Глава 28. 

Функции классификации символов <ctype.h>

 

Глава 29. 

Функции для работы со строками <string.h> 

Глава 30. 

Функции для работы с файлами <stdio.h> 

Глава 31. 

Организация нелокальных переходов <setjmp.h> 

Глава 32. 

Обработка исключительных ситуаций <signal.h> 

Глава 33. 

Поддержка локализации <locale.h> 

Глава 34. 

Работа с датами и временем <time.h> 


background image

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


background image

  

 
 

Г Л А В А  

20 

 
 
 

Стандартные определения 

<stddef.h> 

В  заголовочном  файле  stddef.h  определена  символическая  кон-
станта 

NULL

,  макрокоманда 

offsetof

  и  типы  данных 

ptrdiff_t

size_t

 и 

wchar_t

20.1. Типы данных 

Тип 

ptrdiff_t

  используется  для  определения  типа  значения,  по-

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

  typedef int ptrdiff_t; 

Тип 

size_t

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

возвращает оператор 

sizeof

. Этот тип является синонимом цело-

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

  typedef unsigned int size_t; 

Тип 

wchar_t

 используется при работе с символами, для хранения 

которых  требуется  два  байта.  Этот  тип  является  синонимом  це-
лочисленного типа без знака и может быть определен следующим 
образом: 

  typedef unsigned short wchar_t; 

  

 


background image

Часть III. Стандартная библиотека языка программирования C 

280 

20.2. Макрос 

NULL

 

Макрос 

NULL

  обычно  используется  для  инициализации  указате-

лей,  начальное  значение  которых  неизвестно.  Определен  этот 
макрос следующим образом: 

  #define NULL 0 

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

NULL

  может  быть  также 

определен как: 

  #define NULL ((void *)0) 

То  есть  в  обоих  случаях  компилятор  подставляет 

0

  вместо  этой 

константы. 

20.3. Макрос 

offsetof

 

Макрос 

offsetof

  предназначен  для  определения  смещения  члена 

структуры относительно начала структуры. Смещение определя-
ется  в  байтах.  Этот  макрос  может  быть  определен  следующим 
образом: 

  #define offsetof(s, m) (size_t)&(((s*)0)->m) 

где параметр 

s

  задает  тип  структуры,  а  параметр 

m

  —  имя  члена 

этой структуры. Если 

m

  задает  битовое  поле  структуры,  то  пове-

дение макрокоманды 

offsetof

 в общем случае не определено. 

В листинге 20.1 приведен пример использования макроса 

offsetof

Листинг 20.1. Использование макроса 

offsetof

 

#include<stddef.h> 
#include<stdio.h> 
 
struct emp 

  int empno; 
  char name[20]; 
  double salary; 
}; 


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