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

ЗАМЕЧАНИЯ К МАКРОСАМ С

- макрос пригоден для обработки параметров любого типа, допустимых в выражениях строки замещения;

- аргументы вызова макроса – препроцессорные лексемы, разделенные запятыми. Аргументы макрорасширениям не подвергаются.

Оператор #

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

Пример:

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

#define print (A) printf(#A"=%f', A)

К макросу print (A) можно обращаться, подставляя вместо параметра A произвольные выражения, формирующие результаты вещественного типа, пример:

print (sin (a/2)); - обращение к макросу;

printf("sin (a/2)""=%f", sin (a/2)); - макрорасширение•

Фрагмент программы:

double a=3•14159;

print (sin (a/2));

результат выполнения (на экране дисплея):

sin (a/2)=1.0

Оператор ##

Оператор ## - бинарный, позволяет выполнять конкатенацию лексем, включаемых в строку замещения.

Пример:

#define zero (a, b, с, d) a (bcd)

#define one (a, b, с, d) a (b с d)

#define two (a, b, с, d) a (b##c##d)

макровызов: результат макроподстановки:

zero(sin, x, +, y) sin(bcd)

one(sin, x, +, y) sin(x + y)

two(sin, x, +, y) sin(x+y)

В случае zero() последовательность "bcd" воспринимается как отдельный идентификатор. Замена параметров b, c, d не выполнена. В строке замещения макроса one() аргументы отделены пробелами, которые сохраняются в результате. В строке замещения для макроса two() использован оператор '##', что позволило выполнить конкатенацию аргументов без пробелов между ними.

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

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

Перечень обозначении заголовочных файлов для работы с библиотеками компилятора утвержден стандартом языка. Ниже приведены названия этих файлов, а также краткие сведения о тех описаниях и определениях, которые в них есть. Большинство описаний - прототипы стандартных функции, а определены в основном константы (например, NULL, EOF), необходимые для работы с библиотечными функциями. Все имена, определенные в стандартных заголовочных файлах, являются зарезервированными именами:

assert.h Диагностика программ

ctype.h Преобразование и проверка символов

errno.h Проверка ошибок

float.h Работа с вещественными данными

limits.h Предельные значения целочисленных данных

locate.h Поддержка национальной среды

math.h Математические вычисления

setjump.h Возможности нелокальных переходов

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

stdarg.h - Поддержка переменного числа параметров

stddef.h - Дополнительные определения

stdio.h - - Средства ввода-вывода

stdlib.h - Функции общего назначения (работа с памятью)

string.h - Работа со строками символов

time.h - Определение дат и времени

Стандартные заголовочные файлы могут включаться в текст программы в любом порядке. Действие включаемого заголовочного файла распространяется на текст программы только в пределах одного модуля – от места размещения директивы #include до конца текстового файла.

С помощью технологии включаемых файлов можно осуществить связь модулей, размещенных в разных файлах не только через параметры, но и через общие – глобальные объекты. Описания таких объектов помещаются в одном файле, который с помощью директив #include включается в те модули, где необходимы внешние объекты.

Модуль 3 Указатели, массивы, строки, функции, структуры, ввод-вывод в С/С++

(6-часов)

Содержание модуля: Указатели на объекты. Адреса, указатели и массивы. Действия с указателями. Работа с динамической памятью в С/С++. Массивы динамической памяти. Символьная информация и строки. Функции С/С++. Массивы, строки, функции как параметры функций. Структурный тип. Реализация динамических структур данных в С/С++. Потоковый ввод-вывод в С/С+


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: