Как правило, вы всегда должны использовать библиотеки C, когда это возможно.Одна из реальных причин, по которой это не нужно делать, - это когда вы находитесь во встроенной среде и чрезвычайно ограничены в пространстве (что обычно не так, и практически все встроенные платформы предоставляют библиотеки C для этой платформы).
Примером может быть то, чтоиспользование функции isalpha
может фактически перетаскивать объектный файл, содержащий все функции is...
, и ни одна из них вам не нужна (объектный файл является типичной минимальной единицей при связывании, хотя некоторые компоновщики могут переходить к отдельным функциям).
Написав свой собственный isalpha
, вы можете убедиться, что он и только он включен в ваш окончательный двоичный файл.
В некоторых ограниченных случаях вы можете получить более высокие скорости, когда выесть очень конкретная вещь, которую вы хотите сделать, и библиотека обрабатывает более общий случай.Опять же, необходимо, только если конкретный цикл является узким местом в системе.Вы также можете выбрать другой компромисс между скоростью и пространством, чем тот, который был выбран автором библиотеки, например, изменяется:
int isalpha (int c) {
return ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z'));
}
на:
int isalpha (int c) {
static int map[256] = {0,0,0,0,...,1,1,1,...,0,0,0};
return map[c & 0xff];
}
(потенциально) быстреереализация за счет дополнительного хранилища для карты (и вам необходимо понимать среду выполнения, поскольку она не переносима).
Еще одна причина не использовать их - предоставить более безопасный способ работы с такими вещами, как строкигде безопасность / надежность является КРИТИЧЕСКИМ фактором.Как правило, это будет стоить вам гораздо больше времени, чтобы доказать правильность.