В заголовочном файле также определены константы, описанные в табл. B.V.35. Таблица 6.V.35. Константы, определенные в stdlib.h
В табл. B.V.36 представлены прототипы функций, определенные в stdlib.h. Таблица 6.V.36. Утилиты общего назначения
Справочные материалы 877
Продолжение табл. Б.\(.36
Справочные материалы 879
Окончание табл. B.V.36
_Noreturn: stdnoreturn.h
Это определяет макрос noreturn, который расширяется до _Noreturn.
Обработка строк: string.h
В заголовочном файле string.h определен тип size_t и макрос NULL для нулевого указателя. Кроме того, предлагается ряд функций для анализа и манипулирования символьными строками, а также несколько функций, работающих с памятью более универсальным способом. Эти функции перечислены в табл. B.V.37.
Таблица 6.V.37. Строковые функции
Справочные материалы 881
Окончание табл. B.V.37
Функция strtok() применяется несколько необычно, поэтому рассмотрим небольшой пример:
#include
#include
int main(void)
{
char data[] = " С приносит\t очень#много\nрадости!"; const char tokseps[] = " \t\n#"; /* разделители */
char * pt;
puts(data);
pt = strtok(data,tokseps); /* первый вызов */
while (pt) /* выход в случае NULL */
{
puts (pt); /* показать лексему */
pt = strtok(NULL, tokseps); /* следующая лексема */
}
return 0;
}
882 Приложение Б
Вот вывод, полученный в результате запуска этого примера:
С приносит очень#много радости!
С
приносит очень много радости!
Математические функции для обобщенных типов:
tgmath.h (С99)
Библиотеки math.h и complex.h предоставляют множество экземпляров функций, которые отличаются только типами. Например, все шесть функций, показанные ниже, вычисляют синус:
double sin(double);
float sinf(float);
long double sinlllong double);
double complex csin(double complex);
float csinf(float complex);
long double csinlllong double complex);
В заголовочном файле tgmath.h определены макросы, которые расширяют обобщенный вызов в обращение к соответствующей функции, как указано типом аргумента. Следующий код иллюстрирует использование макроса sin(), расширяемого в различные формы функции синуса:
В этом заголовочном файле определены обобщенные макросы для трех классов функций. Первый класс состоит из функций math.h и complex.h, определенных в тести вариациях, в которых применяются суффиксы f и 1 и префикс с, как в предыдущем примере с sin(). В данном случае обобщенный макрос носит то же имя, что и версия double функции.
Во второй класс входят функции math.li, определенные в трех вариациях с использованием суффиксов f и 1, которые не имеют комплексных аналогов, к примеру, erf(). В этом случае имя макроса выглядит так же, как имя функции без суффикса, в рассматриваемом примере — erf(). Результат применения такого макроса с комплексным аргументом не определен.
Третий класс состоит из функций complex.h, которые определены в трех вариациях с использованием суффиксов f и 1 и не имеют вещественных аналогов, таких как cimag(). В данном случае имя макроса совпадает с именем функции без суффикса, в этом примере — cimag(). Результат применения такого макроса с вещественным аргументом не определен.