Include stdlib h c что это
Перейти к содержимому

Include stdlib h c что это

  • автор:

Заголовочный файл cstdlib (stdlib.h)

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

Функции заголовочного файла cstdlib

Преобразование строк
atof Преобразование строки в число типа double .
atoi Преобразование строки в число типа int .
atol Преобразование строки в число типа long int .
strtod Преобразование строки в значение типа double .
strtol Преобразование строки в long int .
strtoul Преобразование строки в unsigned long int .
itoa Преобразование числа в строку типа string .
Генерация псевдослучайных чисел
rand Генератор псевдослучайных чисел.
srand Инициализатор генератора псевдослучайных чисел.
Функции динамического управления памятью
calloc Динамическое выделение памяти под массив данных, предварительно инициализируя её нулями.
free Высвобождение динамически выделенной ранее памяти.
malloc Динамическое выделение памяти, без инициализации.
realloc Динамическое выделение памяти, с возможным перемещением блока памяти.
Поиск и сортировка
bsearch Бинарный поиск в массиве данных.
qsort Быстрая сортировка элементов массива.
Целая арифметика
abs Вычисление абсолютной величины (модуля) только целых значений типа int .
div Функция возвращает целую часть и остаток типа int , при делении числителя на знаменатель.
labs Вычисление абсолютной величины (модуля) целых значений типа long int .
ldiv Функция возвращает целую часть и остаток, типа long int , при делении числителя на знаменатель.
Функции для обработки много-байтовых символов
mblen Определение размера строки с много-байтовыми символами.
mbtowc Преобразование много-байтового символа в широкий символ типа wchar_t .
wctomb Преобразование широкого символа типа wchar_t в много-байтовый символ.
Функции для обработки много-байтовых строк
mbstowcs Преобразование строки с много-байтовыми символами в строку с широкими символами типа wchar_t .
wcstombs Преобразование строки с широкими символами в строку с многобайтовыми символами.
Другое
abort Аварийное завершение работы программы.
atexit Вызов функций после удачного завершения программы.
exit Немедленное завершение программы(процесса).
getenv Обращение к переменным окружения.
system Выполнение системной команды.

Макросы

EXIT_FAILURE Неудачное завершение программы.
EXIT_SUCCESS Успешное завершение программы.
MB_CUR_MAX Макрос определяет максимальный размер много-байтовых символов.
NULL Нулевой указатель.
RAND_MAX Максимальное значение, генерируемое функцией rand.

Типы данных

div_t Структура для представления частного и остатка от деления типа int.
ldiv_t Структура для представления частного и остатка от деления типа long.
size_t Тип данных для представления размера в байтах.

Поделиться:

�� Rust Journey: Хотите освоить язык программирования, который завоевывает мир?

�� Илон Маск, один из ведущих инноваторов нашего времени, утверждает, что за Rust будущее. А когда последний раз он ошибался в своих прогнозах? ��

✨ Не упустите свой шанс быть в авангарде IT-революции. Подписывайтесь на канал Rust Journey и начните свой путь в захватывающий мир Rust сегодня!

Новое

  • Особенности Qt: слоты и сигналы, описание QObject и QApplication, виды окон и т.д.
  • Первая программа на Qt:
  • Введение — графическая библиотека Qt
  • Наследование классов
  • Перегрузка операторов в С++ (часть 2)

stdlib.h и cstdlib

Где-то видел информацию, что подключение обеих библиотек stdlib.h и cstdlib плохо. Знаю, что первая для C(и, вроде как, устаревшая), другая для C++. Помогите понять, какие негативные последствия может иметь их одновременное подключение?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

строки в стиле С — cstdlib
Добрый вечер) Изучаю функции, связанные со строками. Конкретно по функциям, содержащимся в.

Ругается на cstdlib
При подключении библиотеки cstdlib, ругается на строки в нём: _GLIBCXX_BEGIN_NAMESPACE(std) .

Не распознается библиотека cstdlib (CodeBlocks)
учусь писать программы в CodeBlocks. При использовании библиотеки cstdlib появляется целый список.

Эксперт С++

13663 / 10580 / 6322
Регистрация: 18.12.2011
Сообщений: 28,248

Noob1231, интересно, а зачем Вам надо подключать две библиотеки, определяющие одинаковые функции?
НО на самом деле ничего не произойдет, т.к. cstdlib тоже подключает stdlib.h

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
// cstdlib standard header #pragma once #ifndef _CSTDLIB_ #define _CSTDLIB_ #include #ifdef _STD_USING #undef _STD_USING #include #define _STD_USING #else /* _STD_USING */ #include #endif /* _STD_USING */ #ifndef RC_INVOKED #if _GLOBAL_USING _STD_BEGIN using ::size_t; using ::div_t; using ::ldiv_t; using ::abort; using ::abs; using ::atexit; using ::atof; using ::atoi; using ::atol; using ::bsearch; using ::calloc; using ::div; using ::exit; using ::free; using ::getenv; using ::labs; using ::ldiv; using ::malloc; using ::mblen; using ::mbstowcs; using ::mbtowc; using ::qsort; using ::rand; using ::realloc; using ::srand; using ::strtod; using ::strtol; using ::strtoul; using ::system; using ::wcstombs; using ::wctomb; _STD_END #endif /* _GLOBAL_USING */ #endif /* RC_INVOKED */ #endif /* _CSTDLIB_ */ /* * Copyright (c) 1992-2007 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. V5.03:0009 */

Include stdlib h c что это

После перевода проекта с VS7.1 на VS8 при компиляции debug версии мне выдается куча сообщений об ошибках компиляции.
Таких:

error C2059: syntax error : 'constant' c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488 error C2733: second C linkage of overloaded function '_dupenv_s_dbg' not allowed c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488
Error 83 error C2039: 'calloc' : is not a member of '`global namespace'' c:\program files\microsoft visual studio 8\vc\include\cstdlib 22 Error 84 error C2873: 'calloc' : symbol cannot be used in a using-declaration c:\program files\microsoft visual studio 8\vc\include\cstdlib 22

Может знаете, с чем это может быть связано?

Re: Ошибки в stdlib

От: Lorenzo_LAMAS
Дата: 19.11.07 12:01
Оценка:

Не могли бы вы выделить минимальный пример, на котором воспроизводится данная ошибка?
Of course, the code must be complete enough to compile and link.
Re[2]: Ошибки в stdlib

От: Александр Кузнецов www.omskcult.ru
Дата: 19.11.07 12:40
Оценка:

L_L>Не могли бы вы выделить минимальный пример, на котором воспроизводится данная ошибка?
В том то и дело, что все эти ошибки указывают на библиотеки stdlib.h и cstdlib.
При компиляции в 7 студии их не возникало — вот я и подумал, что с этой библиотекой что-то случилось.
Или где-то она у меня неправильно используется, что компилятор 7 студии позволял.

Re[3]: Ошибки в stdlib

От: Lorenzo_LAMAS
Дата: 19.11.07 12:43
Оценка:

АК>В том то и дело, что все эти ошибки указывают на библиотеки stdlib.h и cstdlib.
При простом подключении или таких ошибок нет. Значит, ИМХО, что-то включается до stdlib.h, что и приводит к проблемам.

Of course, the code must be complete enough to compile and link.
Re: Ошибки в stdlib

От: AleksandrN
Дата: 20.11.07 08:31
Оценка:

Здравствуйте, Александр Кузнецов, Вы писали:

АК>После перевода проекта с VS7.1 на VS8 при компиляции debug версии мне выдается куча сообщений об ошибках компиляции.
АК>Таких:

АК>

АК>error C2059: syntax error : 'constant' c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488 АК>error C2733: second C linkage of overloaded function '_dupenv_s_dbg' not allowed c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488 АК>

АК>И таких:

АК>

АК>Error 83 error C2039: 'calloc' : is not a member of '`global namespace'' c:\program files\microsoft visual studio 8\vc\include\cstdlib 22 АК>Error 84 error C2873: 'calloc' : symbol cannot be used in a using-declaration c:\program files\microsoft visual studio 8\vc\include\cstdlib 22 АК>

АК>Может знаете, с чем это может быть связано?

Собираешь проект из командной строки и на компьютере сейчас установлены обе версии VS?

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

Re[2]: Ошибки в stdlib

От: Александр Кузнецов www.omskcult.ru
Дата: 21.11.07 06:09
Оценка:

AN>Собираешь проект из командной строки и на компьютере сейчас установлены обе версии VS?

AN>Эта ошибка может возникать из-за того, что при компиляции запускается файл cl.exe из версии 7.1, а путь к заголовочным файлам указан для версии 8.0. Проверь значения переменных окружения или удали предыдущую версию компилятора.

После переустановки Windows vs7.1 я не ставил вообще.

Re[3]: Ошибки в stdlib

От: Lorenzo_LAMAS
Дата: 21.11.07 08:52
Оценка:

Возьмите, например, такую строку:

error C2059: syntax error : 'constant' c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488
_CRTIMP __checkReturn_opt errno_t __cdecl _dupenv_s(__deref_out_ecount_z_opt(*_PBufferSizeInBytes) char **_PBuffer, __out_opt size_t * _PBufferSizeInBytes, __in_z const char * _VarName);

подобная ошибка будет, например, если я где-то сделаю #define _CRTIMP 10. Понятно, что у Вас нет такой глупости в коде, но все же.

Of course, the code must be complete enough to compile and link.
Re[4]: Ошибки в stdlib

От: Александр Кузнецов www.omskcult.ru
Дата: 22.11.07 09:31
Оценка:

Здравствуйте, Lorenzo_LAMAS, Вы писали:

АК>>В том то и дело, что все эти ошибки указывают на библиотеки stdlib.h и cstdlib.
L_L>При простом подключении или таких ошибок нет. Значит, ИМХО, что-то включается до stdlib.h, что и приводит к проблемам.
Я нашел в чем дело. Это баг самой VS8 — нужно SP1 установить:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=99509

Re[5]: Ошибки в stdlib

От: _cb_
Дата: 22.11.07 14:29
Оценка:

мне он не помог. у них какой-то баг при разворачивании вложенных дефайнов когда в дефайн передается параметром пустая строка.
я пока забил обошелся воркэраундом.

пля весь день сегодня убил.

когда в коде юзают __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1 передавая в качестве _DeclSpec пустую строку, то в самом низу эта пустая строка превращается в число 1. может это и не баг в чистом виде, дальше рыться уже нет желания.

#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _DstType, _Dst, _TType1, _TArg1) \ __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _Dst, _TType1, _TArg1) #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _DstType, _Dst, _TType1, _TArg1) \ _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_DstType *_Dst, _TType1 _TArg1);

Re: Ошибки в stdlib

От: korzh.pavel
Дата: 22.11.07 17:09
Оценка:

Здравствуйте, Александр Кузнецов, Вы писали:

АК>После перевода проекта с VS7.1 на VS8 при компиляции debug версии мне выдается куча сообщений об ошибках компиляции.
АК>Таких:

АК>

АК>error C2059: syntax error : 'constant' c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488 АК>error C2733: second C linkage of overloaded function '_dupenv_s_dbg' not allowed c:\program files\microsoft visual studio 8\vc\include\stdlib.h 488 АК>

АК>И таких:

АК>

АК>Error 83 error C2039: 'calloc' : is not a member of '`global namespace'' c:\program files\microsoft visual studio 8\vc\include\cstdlib 22 АК>Error 84 error C2873: 'calloc' : symbol cannot be used in a using-declaration c:\program files\microsoft visual studio 8\vc\include\cstdlib 22 АК>

АК>Может знаете, с чем это может быть связано?

Что нибудь из этого используете:

Re[6]: Ошибки в stdlib

От: Александр Кузнецов www.omskcult.ru
Дата: 26.11.07 10:26
Оценка:

__>мне он не помог. у них какой-то баг при разворачивании вложенных дефайнов когда в дефайн передается параметром пустая строка.
__>я пока забил обошелся воркэраундом.

__>пля весь день сегодня убил.

Мне тоже не особо — скомпилировалась, но работать не стала. Куча багов с памятью. Поэтому плюнул и пишу дальше в 2003 студии.

Re[2]: Ошибки в stdlib

От: Александр Кузнецов www.omskcult.ru
Дата: 26.11.07 10:29
Оценка:

KP>Что нибудь из этого используете:
KP>_CRTDBG_MAP_ALLOC
KP>#include
KP>?

что значит

Начинающему программисту стоит научится пользоваться поиском:

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

Чтобы упростить преобразование кода для многоязыковых приложений, в библиотеке времени выполнения Microsoft предоставляются собственные универсальные текстовые сопоставления для большинства типов данных, стандартных процедур и других объектов. Эти сопоставления определены в файле Tchar.h и могут использоваться для написания универсального кода, который можно скомпилировать в однобайтовом, многобайтовом формате или в формате Юникод (в зависимости от значения константы манифеста, определенной с помощью оператора #define). Универсальные текстовые сопоставления представляют собой расширения Microsoft, несовместимые со стандартами ANSI.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *