Спонсоры сайта:

Наличие этой страницы в поиске?

Информеры ТИЦ и PR

  Yandex ТИЦ:  
   Google PR:  

Путешественникам, меломанам, бизнесменам, вебмастерам, новости.

Содержание | <<< | >>>

Заголовки





С каждой функцией стандартной библиотеки С связан свой заголовок. Соответствующие заголовки используемых функций должны быть включены в программу с помощью директивы #include. Заголовки выполняют две важные функции. Во-первых, многие функции стандартной библиотеки работают с данными собственного определенного типа, к которым должна иметь доступ основная программа, использующая эти функции. Эти типы данных задаются в заголовках, связанных с каждой функцией. Одним из наиболее распространенных примеров является заголовок файловой системы <stdio.h>, определяющий тип FILE, который необходим для выполнения операций с файлами на диске.

Второй причиной включения заголовков является необходимость получения прототипов библиотечных функций. Прототипы функций позволяют компилятору производить более строгую проверку типов. Хотя прототипы технически являются необязательными, они необходимы для всех практических целей. Кроме того, они нужны для C++. Все программы, содержащиеся в этой книге, подразумевают наличие полного прототипа.

Список стандартных заголовков, определенных Стандартом С89, приведен в таблице 12.1. В таблице 12.2 приведены заголовки, добавленные в Стандарте С99.

Стандартом С для заголовков зарезервированы идентификаторы, начинающиеся символом подчеркивания, за которым следует символ подчеркивания либо заглавная буква.

Как уже было сказано в части I, заголовки — это, как правило, файлы, но не всегда. Компилятор может предопределить содержимое заголовка внутренним образом. Однако в практических целях содержимое стандартных заголовков С находится в файлах, имена которых совпадают с именами самих заголовков.

В следующих главах части III, описывающих все стандартные библиотечные функции, для каждой функции указаны соответствующие ей заголовки.

Таблица 12.1. Заголовки, определенные в С89
ЗаголовокНазначение
<assert.h>Определяет макрос assert()
<ctype.h>Обработка символов
<errno.h>Выдача сообщения об ошибках
<float.h>Задает пределы значений с плавающей точкой, зависящие от реализации
<limits.h>Задает различные ограничения, зависящие от реализации
<locate.h>Поддерживает локализацию
<math.h>Различные определения, используемые математической библиотекой
<setjmp.h>Поддерживает нелокальные переходы
<signal.h>Поддерживает обработку сигналов
<stdarg.h>Поддерживает списки входных параметров функции с переменным числом аргументов
<stddef.h>Определяет некоторые наиболее часто используемые константы
<stdio.h>Поддерживает систему ввода/вывода
<stdlib.h>Смешанные объявления
<string.h>Поддерживает функции обработки строк
<time.h>Поддерживает функции, обращающиеся к системному времени

Таблица 12.2. Заголовки, добавленные в С99
ЗаголовокНазначение
<complex.h>Поддерживает арифметические операции с комплексными числами
<fenv.h>Предоставляет доступ к флажкам состояния вычислителя, выполняющего операции с плавающей точкой, а также доступ к другим сигналам этого вычислителя
<inttypes.h>Определяет стандартный, переносимый набор имен целочисленных типов, поддерживает функции, которые работают с целыми значениями наибольшей разрядности
<iso646.h>Добавлено в 1995 году Поправкой 1; определяет макросы, соответствующие различным операторам, например && и ^
<stdbool.h>Поддерживает логические типы данных; определяет макрос bool, способствующий совместимости с языком C++
<stdint.h>Задает стандартный переносимый набор имен целочисленных типов; этот файл включен в заголовок <inttypes.h>
<tgmath.h>Определяет макросы для родового (абстрактного) типа чисел с плавающей точкой
<wchar.h>Добавлен в 1995 году Поправкой 1; поддерживает функции обработки многобайтовых слов и двухбайтовых символов
<wctype.h>Добавлен в 1995 году Поправкой 1; поддерживает функции классификации многобайтовых слов и двухбайтовых символов

Макросы в заголовках

Многие стандартные функции С можно ввести либо как собственно функции, либо как подобные функциям макросы, заданные в заголовке. Например, функцию abs(), которая возвращает абсолютную величину целочисленного аргумента, можно также задать как макрос:

#define abs(i)  (i)<0 ? -(i):(i)

Обычно не имеет значения, определена ли стандартная функция как макрос или как обычная функция С. Однако в редких случаях, когда макросы неприменимы, — например, если размер программы должен быть минимальным, или если аргумент нельзя вычислять больше одного раза, — нужно создавать обычные функции и подставлять их вместо макроса. Иногда в самой библиотеке С содержатся функции, которые можно использовать для замены ими макросов.

Чтобы компилятор использовал истинную функцию, необходимо предпринять меры против подстановки им макроса на место имени функции. Для этого есть несколько способов, но, безусловно, лучший из них — просто пометить имя макроса как неопределенное с помощью #undef. Например, чтобы заставить компилятор подставить вместо ранее определенного макроса истинную функцию abs(), можно в начало программы вставить следующую строку:

#undef abs

Теперь, когда abs больше не является макросом, будет использоваться функция.


Содержание | <<< | >>>

C++ исходники. Все примеры - рабочие:

часы:

Dev C++ WinAPI Стрелочные часы Analog Clock

Dev C++ WinAPI Цифровые прозрачные часы. Текст на рабочем столе. Digital transparent clock. Text on desktop

Dev C++ OLE WinApi CALENDAR and DIGITAL CLOCK (15kb). Календарь и цифровые часы

Dev C++ OLE WinAPI Календарь и цифровые часы почти Vista SideBar всего 21kb

плееры:

Microsoft Visual C++ 2008 Direct Show DVD Mini Player 10.5kb

Dev C++ WinAPI Микро медиа плеер 3.5kb

Dev C++ WinAPI Мини медиа плеер 4.5kb

Dev C++ WinAPI Hint Всплывающая подсказка

Dev C++ WinAPI RECT - имитатор кнопки

Dev C++ WinAPI Заполнить ListBox

Dev C++ WinAPI Заполнить, редактировать, сохранить, загрузить ListBox (PlayList)

Dev C++ WinAPI Индикатор уровня

Dev C++ WinAPI MP3 Микро плеер Открыть с помощью...

Dev C++ WinAPI Своя кнопка

изображения:

Dev C++ GDI+ WinAPI Mini FotoResizer (16kb), изменяет размеры всех фото (JPG) до указанного размера в выбраной папке и её подпапках

Dev C++ WinAPI Сохранить BITMAP экрана, десктопа, окна, клиентской области.

Dev C++ WinAPI Изменить размер изображения BMP RESIZE. Загрузка изображений из ФАЙЛА, вывод на экран и сохранение в файл.

Dev C++ WinAPI Загрузка изображений из РЕСУРСОВ и вывод на экран.

Dev C++ GDI+ WinAPI. Преобразовать изображения из одного формата в другой (JPG в BMP, GIF, PNG и обратно ), используя дополнительные библиотеки GDI+. Загрузка изображений из файла и сохранение в файл.

Dev C++ GDI+ WinAPI масштабирование JPG RESIZE

Dev C++ OLE WinAPI. Преобразовать изображения из JPG в BMP, используя дополнительные библиотеки OLE. Загрузка изображений из РЕСУРСОВ и сохранение в файл.

Dev C++ OLE WinAPI преобразовать JPG в BMP, используя дополнительные библиотеки OLE. Загрузка изображений из ФАЙЛА и сохранение в файл.

Dev C++ OLE WinAPI масштабирование BMP RESIZE

разное:

Dev C++ WinAPI Dev C++ Преобразовать цвет точки экрана в HTML код

Dev C++ WinAPI NOTIFYICONDATA WS_EX_TOOLWINDOW Иконка в области уведомлений (notification area, tray, трей). Удалить с панели задач (taskbar).

Dev C++ WinAPI ShellExecute Создать ссылку на WEB сайт

Dev C++ WinAPI ShellExecute Создать окно со ссылкой на WEB сайт

Dev C++ WinAPI CreateProcess ShellExecute WinExec Запуск приложения из приложения

Dev C++ OLE WinAPI Создать регион Regions PopUp Меню Menu

Dev C++ FindFiles. Поиск файлов заданного типа (в примере *.JPG) в папке и её подпапках

библиотеки:

Скачать библиотеку GDI+ для Dev C++

Скачать справочнник с примерами языка C.