[英]How can I check if I implement C library functions correctly?
是否有基本 C 库函数(如strcmp
、 memset
等)的源/数据库?
我想实现基本的 C 库函数,但我无法验证我是否做得对。
我找到了几个源代码数据库,但它们比应有的复杂得多(例如, strcpy
的实现超过 30 行,其中一半与复制字符串无关,我认为)。
“基本”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 版本确实应该被视为参考实现。)
PJ Plauger 有一本很棒的书The Standard C Library 。 它有点过时(1992 年),但如果您想实现 libc 并正确执行,它仍然是宝贵的资源。 它包含库的完整代码。 还有musl libc 。 代码位于 git repo 中。 实现并不简单,但如果我将它与其他实现进行比较,它确实小而简单。 正如其他人已经提到的,C 标准是您想要查看的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.