没有丑化名称的标准库输入源
Standard library implmentation source that hasn't had names uglified
阅读C++源代码显然是一种很好的学习方式,当它是一个你知之甚少的功能时,它非常有趣。就标准库源而言,由于名称的丑陋化,这很困难。
在源代码包含在标准库中之前,是否通过对源代码进行某种后处理来完成丑陋化?如果是这样,原始源代码会怎样?是否有任何非丑化C++标准库源代码的存储库?
我特别关注 C++11 和很快的 C++14 功能很有趣。
我无法想象以这种形式维护代码会很有趣......
编辑:
这里有一个建议取消这个过程。
在学习标准库实现时,首先请注意标准库必须遵守某些不适用于普通用户编写的代码的苛刻约束。此外,标准C++库完成的一些操作有些深奥,我会担心它们是否曾经被普通用户的代码使用过(如果你的公司有一个低级别的库团队,他们可能会做一些类似的事情,不过(。特别是关于约束标准库需要遵守的是,使用的任何名称都不会与用户在任何地方使用的任何名称冲突。由于用户可以定义有趣的宏,标准库需要在用户可见的上下文中使用为标准库保留的名称,例如头文件:
- 保留标准C++库中用于类、函数、枚举等的名称或其 TMEPLATE(如果适用(。 所有以下划线
- 后跟大写字母开头的名称或包含两个连续下划线的名称都将保留在所有上下文中。 但是,还有其他几个保留名称通常不在
- 标头中使用,因为它们大多不在宏名称的上下文中保留。
您特别不想从标准C++库中复制的内容是包含保护的命名:它们通常以一个或两个下划线开头,并且都是大写字符。除非明确允许用户使用这些标识符(例如,您可以使用__FILE__
和__LINE__
,否则不允许用户使用这些标识符中的任何内容,例如,在程序中可以通过宏扩展的任何位置写入_FOOBAR
(也就是说,我认为您可以编写"_FOOBAR"
(。
回答你的实际问题:我所知道的所有标准C++库实现(libstdc++,libc ++,Dinkumware,RougeWave和我自己的(都是使用"丑化"的名称编写的,并且没有程序将它们转换为这种形式。基本上,任何程序都必须处理许多不太可行的异常。我认为,标准的C++库实现者只是习惯了有趣的名称。对于我的实现,我努力用一个通用的前缀命名所有内容,以便可以使用简单的sed
脚本撤消丑化,但我并没有在任何地方都遵循这种模式。
- 从标准输入读取文件后读取用户输入
- 如何从标准输入中检测格式化输入错误?
- C++ - 标准输入环路
- 快速读取标准输入缓冲区,无需检查
- 将标准输入中的双精度存储在矢量中
- 如何将 getline 与标准输入一起使用?
- 从 C++ 中的标准输入迭代读取字节
- C++计算标准输入的字数
- 如何从 c++ 中的给定标准输入中获取每个字符的偏移量?
- 为什么此代码从标准输入中少一个输入?
- 如何在C++中从标准输入中获取变量输入
- C++ 从标准输入读取文件名
- 从标准输入读取多个类型时出现问题
- 如何在execl中使用标准输入'<'?
- 如何在 eclipse 中将标准输入从控制台更改为另一个程序
- 流对象来表示文件输入,然后是标准输入?
- 标准输入输出操作如何C++完成
- 从标准输入读取时zmq_poll不侦听信号
- 是否可以从标准输入指向指针的地址
- 标准输入未读取最后一行