首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么libstdc++头包含制表符和空格的混合?

为什么libstdc++头包含制表符和空格的混合?
EN

Stack Overflow用户
提问于 2022-05-12 18:53:15
回答 2查看 197关注 0票数 4

我已经看了libstdc++头几年了,我总是感到奇怪的是,它混合了制表符和空格,例如:

代码语言:javascript
运行
复制
      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++,我什么都没看到.

EN

回答 2

Stack Overflow用户

发布于 2022-05-12 20:01:56

这是通常的老式智能标签缩进,以节省磁盘空间和更快的设备之间的传输速度在古代,以前的USB。此外,与在4或8个空格上移动相比,矩阵针打印机在单个制表符上的移动速度更快。

  1. 制表符只在行的开头使用。其他一切,比如ASCII艺术和表格,都应该用空格格式化。
  2. 制表符仅用于表示缩进级别。每个“块”只有一个制表符-任何剩余的空格都是空格。

列表项目是从范尼文章SmartTabs缩进制表符,与空格对齐获得的引号。

票数 5
EN

Stack Overflow用户

发布于 2022-05-12 20:00:17

因此,显然有一些GNU编码标准,其中除其他外,规定任何标题八进制的空格都将被制表符替换。

然而,从上面这一行来看( GCC 10号,没有任何标签):

代码语言:javascript
运行
复制
          _Up _M_value;

这一规则也可能被违反。

简而言之,尽管这可能会伤害阅读标准库头的开发人员,但GNU似乎对两者都很固执:

  • 默认情况下,制表符并不总是设置为8个空格。
  • 每次切换到新env时,您必须记住将它们重置为8。
  • 可以在项目的其他地方使用非8空间选项卡(并强制使用,例如以类似于此的方式)。
  • 有些网站和其他工具无法控制标签大小。

等。

很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72220757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档