是否有基本 C 库函数(如 、 等)的源/strcmp
数据库memset
?
我想实现基本的 C 库函数,但我无法验证我是否做对了。
我找到了几个源代码数据库,但它们比应有的复杂得多(例如,实现strcpy
超过 30 行,其中一半与复制字符串无关,我认为)。
PJ Plauger有一本很棒的书The Standard C Library。它有点过时(1992 年),但如果您想实现 libc 并正确执行,它仍然是宝贵的资源。它包含库的完整代码。还有musl libc。代码位于 git repo 中。实现并不简单,但如果我将它与其他实现进行比较,它真的很小而且很简单。正如其他人已经提到的那样,C 标准是您想要查看的东西。
“基本”C 库函数也是对程序性能和正确性最重要的一些函数,因此往往具有一些复杂的实现。
我建议您查看Newlib的代码。它是一个用于嵌入式系统的基本 C 库(您的电视可能会很好地运行它),它也用于 Cygwin。该许可证还与出于您自己的目的的“借用”源代码大部分兼容,但要小心,因为它的某些位(某些文件)是 GPL。
查看OpenBSD C 库。例如,这是它的基本内容strcpy
:
char *
strcpy(char *to, const char *from)
{
char *save = to;
for (; (*to = *from) != '\0'; ++from, ++to);
return(save);
}
函数的文档以联机帮助页的形式包含。
(它还带有常用例程的优化版本,通常在汇编程序中,因此 C 版本应该被视为参考实现。)