繁体   English   中英

如何检查我是否正确实现了 C 库函数?

[英]How can I check if I implement C library functions correctly?

是否有基本 C 库函数(如strcmpmemset等)的源/数据库?
我想实现基本的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM