使用“yes”,“no”,“i”,“out”作为变量/枚举的名称是否安全?

时间:2017-07-11 08:01:15

标签: c++ variables enums naming-conventions

我已经阅读了有关C ++命名规则的文档,它们似乎是可用的名称。

但是,实际上,当我尝试使用iteryesnoouti这样的名称创建变量/枚举时,Error等,Visual Studio会奇怪地使用 italic 字体。

enter image description here

我只能猜测它们是为特殊事物保留的,如果我使用这些名称,IDE(例如重构/重命名过程)可能会很奇怪。

在实践中使用这些名称是否安全?我太恐慌了吗?

抱歉,如果是新手或不合适的问题。
我怀疑这几周但是太害怕了。

2 个答案:

答案 0 :(得分:4)

这些名称是有效的,不会造成任何“伤害”,标准只说:

  
      
  • 每个包含双下划线(_ _)的名称或以下划线后跟大写字母(2.11)开头的名称保留给   任何用途的实施。

  •   
  • 以下划线开头的每个名称都保留给实现,以用作全局命名空间中的名称。

  •   

这意味着您的所有名字都可以在用户代码中使用。 Visual Studio可能只有这些名称,因为iiter通常用于循环。

答案 1 :(得分:1)

这些名称并未在标准C ++中保留,正如Rick Astley所解释的那样。实现可以选择接受其他保留字以提供语言扩展,例如C ++ / CLI中的ref class。在某些情况下,例如ref class,其中ref上下文关键字,这些扩展只会在扩展语言范围内构建格式错误的程序。在其他情况下,一个格式良好的程序可能会改变其含义或变得格格不入。在前一种情况下,只要它发出所有强制诊断,实现仍然符合C ++标准;在后一种情况下,它当然不符合。

将后一种扩展可选视为良好做法,例如使用命令行选项,以便实现仍然具有完全符合标准的模式。我的直接猜测是VC ++实际上允许您编写包含yesnoiiter的格式良好的程序,这些程序将按照标准的要求运行(尽管存在实施错误。)

但是,IDE是一个不同的野兽。它被认为超出了C ++标准的范围,可能会阻止甚至阻止您编写完美格式的代码。如果你愿意,这仍然是一个实施质量问题,或者是客户满意度问题。