metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-01-22 10:36 pm

atof, strtod и локаль.

Внезапно: а вот как положено в коде на С конвертить строку в double, если мы точно знаем, что в строке десятичный разделитель ".", и точно знаем, что код будут запускать на системе с адовыми локалями, у которых разделитель "," типа русской, белорусской итд? В дотнете, как положено, есть функция с параметром для локали и инвариантная локаль InvariantCulture. А в олдскульно-кошерном C как? setlocale(LC_NUMERIC,"C"); чо-то не рекомендуют, говорят, не thread-safe.

[identity profile] metaclass.livejournal.com 2012-01-22 08:06 pm (UTC)(link)
А потом у меня юниоры спрашивают "а чего это у тебя половина стандартной либы в свою собственную библиотеку вынесена" :)

[identity profile] gds.livejournal.com 2012-01-22 08:09 pm (UTC)(link)
рекомендуется комментарий (к сигнатуре функции, если приемлемо), описывающий, чем эта функция отличается от стандартной. Все вопросы сведутся к тыканью носом в комментарий.

[identity profile] qehgt.livejournal.com 2012-01-22 08:12 pm (UTC)(link)
А комментарии надо сверху писать, почему этот код был написан.

[identity profile] justy-tylor.livejournal.com 2012-01-22 08:36 pm (UTC)(link)
У меня не спрашивали. Когда системный код идёт в прошивку мобильника/телевизора или игру планируется портировать на консоли, то хрен предугадаешь, _что_ там окажется на месте стандартной либы. =)