当前位置:  开发笔记 > 编程语言 > 正文

c/c ++函数的源代码

如何解决《c/c++函数的源代码》经验,为你挑选了5个好方法。

我想看一下不同C/C++函数的实现(比如strcpy,stcmp,strstr).这将有助于我了解c/c ++中的良好编码实践.你能告诉我在哪里可以找到它吗?

谢谢.



1> mipadi..:

你可以查看一份glibc,它将包含C标准库中所有C函数的源代码.这应该是一个很好的起点.


虽然这是第一个想到的答案,但它可能不是了解具有普遍适用性的"良好编码实践"的最佳场所.这是因为glibc函数有合理的理由进行大量微优化 - 甚至是特定于平台的优化 - 仅仅因为它们是标准库函数.这通常不是一般编程的好习惯.

2> jalf..:

值得指出的是,C标准库的源代码并不一定突出了良好的编码实践.作为标准库,它具有特殊的状态,例如,它可以依赖于许多未指定或不可移植的行为,因为它们知道使用它的确切编译器.

当然,这只会告诉您C编码实践.

这与C++编码实践无关,这与C++编码实践截然不同.不要将它们视为一种语言.没有C/C++这样的东西.C是一种具有自己的编码实践和常用习语的语言,C++是一种独立的,独立的语言,也有自己的实践和习语.

好的C代码很少是好的C++代码.strcpy和其他C库函数肯定不是很好的C++代码.


我认为没有人提到托管代码.在大多数情况下,清洁/便携和高效代码之间也没有矛盾.人们认为*只有*算法效率很重要才会忽略这一点.

3> Michael Burr..:

大多数编译器都提供了库的源代码 - 但是源代码通常比您预期的更复杂和复杂.

PJ Plauger的书"标准C库"是一个很好的资源,如果你选择使用它,它可以非常便宜.提供的代码并不总是直截了当,但Plauger很好地解释了它(并给出了为什么它不能总是直截了当仍然遵循标准的原因).



4> Pete..:

许多C标准库函数都有Kernighan和Ritchie的C编程语言中的源代码清单和讨论.讨论是一种有用的方式,可以更多地了解C语言的细节以及标准库中的函数如何在底层工作.


K&R中的许多功能都以简化形式显示,但如果将它们用作示例,则可能会更好.
对于C语言编程的人来说,K&R应该是必读的.很少有人在如此少的页面中写出如此优秀的东西.

5> IRBMe..:

查看libc标准C库的实现.要了解如何实现真正的流行C库,请尝试查看glibc代码.您可以使用git访问代码:

git clone git://sourceware.org/git/glibc.git

至于C++,你可以在其中一个镜像上找到glibc ++标准库:

http://gcc.gnu.org/mirrors.html

您还可以查看uLibc,它可能比GNU库更简单:

http://git.uclibc.org/uClibc/tree/

为了给你一个味道,这是uLibc 的strncpy实现:

Wchar *Wstrcpy(Wchar * __restrict s1, const Wchar * __restrict s2)
{
    register Wchar *s = s1;

#ifdef __BCC__
    do {
        *s = *s2++;
    } while (*s++ != 0);
#else
    while ( (*s++ = *s2++) != 0 );
#endif

    return s1;
}

这是strcmp和strstr


一个很好的例子说明为什么真正的C库实现不是一般适用的良好编程实践的良好指南 - 对于不同的C编译器具有相同循环的那两个稍微重构的版本,在大多数编程中几乎都不合理.我会的.
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有