标准库implmentation源没有名称uglified

goj*_*oji 0 c++ std

阅读C++源代码显然是一种很好的学习方式,当它是一个你很少了解的特性时,它就显得非常有趣.就标准库来源而言,由于名称的丑化,这很难实现.

在将源代码包含在标准库中之前,是否通过某种类型的源代码处理完成了uglifying?如果是这样,原始源代码会发生什么?是否有任何非uglified C++标准库源代码的存储库?

我在寻找有趣的C++ 11很快C++ 14种特别功能.

我无法想象保持这种形式的代码会非常有趣....

编辑:

有人建议在这里取消这个过程.

Die*_*ühl 7

从标准库实现中学习时,请首先注意标准库必须遵守某些严格的约束,这些约束不适用于普通用户编写的代码.此外,标准C++库完成的一些操作有些深奥,我担心如果它们被普通用户的代码使用(如果你公司有一个低级库团队,他们可能会做一些类似的事情,虽然).特别是在约束标准库上需要遵守的是,所使用的名称都不会与用户在任何地方使用的任何名称冲突.由于用户可以定义有趣的宏,因此标准库需要在用户可见的上下文中使用为标准库保留的名称,例如头文件:

  • 标准C++库中用于类,函数,枚举等的名称或其tmeplates(如果适用)是保留的.
  • 在所有上下文中都保留所有以下划线后跟大写字母或包含两个连续下划线的名称.
  • 但是,还有一些其他保留名称通常不在标题中使用,因为它们通常不在宏名称的上下文中保留.

您特别希望从标准C++库中复制的内容是包含保护的命名:这些通常以一个或两个下划线开头,并且都是大写字符.用户不会允许,除非它们被特别允许使用它们来使用这些标识符(例如,你可以使用__FILE____LINE__,但你是不是允许,例如,写_FOOBAR在程序中任何地方它可能由宏扩展(也就是,我想你可以写"_FOOBAR").

回答你的实际问题:我所知道的所有标准C++库实现(libstdc ++,libc ++,Dinkumware,RougeWave和我自己的)都使用"uglified"名称编写,并且没有程序将它们转换为这种形式.基本上,任何程序都必须处理许多不太可行的异常.我认为,标准的C++库实现者只是习惯了有趣的名字.对于我的实现,我已经努力用一个共同的前缀命名所有内容,以便可以使用一个简单的sed脚本撤消uglification,但我没有在任何地方都遵循该模式.