我已经看了libstdc++头几年了,我总是感到奇怪的是,它混合了制表符和空格,例如:
template<typename _Up, typename... _Args>
<tab >constexpr
<tab >_Optional_payload_base(std::initializer_list<_Up> __il,
<tab ><tab ><tab > _Args&&... __args)
<tab >: _M_payload(__il, std::forward<_Args>(__args)...),
<tab > _M_engaged(true)
<tab >{ }
<...>
<tab > _Empty_byte _M_empty;
_Up _M_value;
<tab >};
template<typename _Up>
<tab >union _Storage<_Up, false>
<tab >{为什么连一行内的制表符和空格都是随机混合的?
当使用非8选项卡显示设置(我猜很多用户可能.)查看时,它变得更加混乱。
libc++头OTOH看起来很好(没有标签).
显然,如果只是关于制表符还是空格,这将是一个基于观点的问题,但这是两者的混合.我觉得这从来不是个好主意,除了libstdc++,我什么都没看到.
发布于 2022-05-12 20:01:56
这是通常的老式智能标签缩进,以节省磁盘空间和更快的设备之间的传输速度在古代,以前的USB。此外,与在4或8个空格上移动相比,矩阵针打印机在单个制表符上的移动速度更快。
列表项目是从范尼文章SmartTabs和缩进制表符,与空格对齐获得的引号。
发布于 2022-05-12 20:00:17
因此,显然有一些GNU编码标准,其中除其他外,规定任何标题八进制的空格都将被制表符替换。
然而,从上面这一行来看( GCC 10号,没有任何标签):
_Up _M_value;这一规则也可能被违反。
简而言之,尽管这可能会伤害阅读标准库头的开发人员,但GNU似乎对两者都很固执:
等。
很好。
https://stackoverflow.com/questions/72220757
复制相似问题