Заголовочный файл 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.
В заголовке объявляется набор функций, предназначенных для манипулирования байтовым потоком. — отвечает за распределение памяти.