jal*_*alf 17
值得指出的是,C标准库的源代码并不一定突出了良好的编码实践.作为标准库,它具有特殊的状态,例如,它可以依赖于许多未指定或不可移植的行为,因为它们知道使用它的确切编译器.
当然,这只会告诉您C编码实践.
这与C++编码实践无关,这与C++编码实践截然不同.不要将它们视为一种语言.没有C/C++这样的东西.C是一种具有自己的编码实践和常用习语的语言,C++是一种独立的,独立的语言,也有自己的实践和习语.
好的C代码很少是好的C++代码.strcpy
和其他C库函数肯定不是很好的C++代码.
大多数编译器都提供了库的源代码 - 但是源代码通常比您预期的更复杂和复杂.
PJ Plauger的书"标准C库"是一个很好的资源,如果你选择使用它,它可以非常便宜.提供的代码并不总是直截了当,但Plauger很好地解释了它(并给出了为什么它不能总是直截了当仍然遵循标准的原因).
许多C标准库函数都有Kernighan和Ritchie的C编程语言中的源代码清单和讨论.讨论是一种有用的方式,可以更多地了解C语言的细节以及标准库中的函数如何在底层工作.
查看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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21967 次 |
最近记录: |