URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6922
[ Назад ]

Исходное сообщение
"stdlib в gcc"

Отправлено Bave , 08-Ноя-07 22:59 
Проблема возникла когда стал переносить некоторые свои работы в Linux.
Причём проблема возникла с функциями stdlib.
На моё удивление в stdlib.h отсутсвует объявление функций itoa, itol и некторые другие,
несмотря на то, что обраттные функции типа atoi и т.п. есть.
У меня gcc 4.1.0-25 (g++). Как сказали на другом форуме - типа так и должно быть и
типа дописывай остальные функции сам. Ну конечно, если придётся, то дописать можно,
но что то мне не верится, что жизнь всех gcc(g++) программистов начинается с дописания stdlib, а потом уже только решения непосредственных задач.  

Содержание

Сообщения в этом обсуждении
"stdlib в gcc"
Отправлено Alu , 09-Ноя-07 06:21 
>Как сказали на другом форуме - типа так и должно быть

Вас не обманули. Полного соответствия между Win.stdlib и Linux.stdlib нет. Необязательно что-то дописывать, можно использовать другие функции. Например snprintf вместо itoa, itol.


"stdlib в gcc"
Отправлено vic , 09-Ноя-07 13:14 
>[оверквотинг удален]
>другие,
> несмотря на то, что обраттные функции типа atoi и т.п. есть.
>
>У меня gcc 4.1.0-25 (g++). Как сказали на другом форуме - типа
>так и должно быть и
>типа дописывай остальные функции сам. Ну конечно, если придётся, то дописать можно,
>
> но что то мне не верится, что жизнь всех gcc(g++) программистов
>начинается с дописания stdlib, а потом уже только решения непосредственных задач.
>

По стандарту их там и не должно быть, а то что в винде есть - это расширение микрософт.
С vc++2005 itoa() и т.п. is deprecated.
В 99% случаев хватает snprintf(str, "%d", i);
Далее, те кто пишут на C++ используют средства С++ и Boost, что более корректно и безопасно.

В линухе как и в юниксе принято работать в рамках стандартов, а не расширений, читайте стандарты и вас еще многое удивит :)


"stdlib в gcc"
Отправлено Bave , 09-Ноя-07 19:31 
вместо itoa сейчас использую sprintf
evct(...) оказывается есть (у меня везде в исходниках было _evct).
Вместо stricmp(...), нащёл strcasecmp(...) - судя по комментариям оже самое. (это уже string.h)
------------------------------------------------
Сейчас осталось найти замену strupr() и strlwr() и вроде пока всё...