代码之家  ›  专栏  ›  技术社区  ›  johnbakers

在include保护的#define开头使用下划线

  •  4
  • johnbakers  · 技术社区  · 13 年前

    This answer 指向参考资料,说明不应使用两个下划线后面跟着一个大写字母。

    然后是 this comment to this question ,第一个由@metal创建,表示在创建包含保护时也不能使用这样的名称。

    然而,我很好奇为什么Xcode在为新的C++文件自动创建包含保护时会这样做:

    #ifndef __DataSource__File__
    #define __DataSource__File__
    
    #include <iostream>
    
    #endif 
    

    这是Xcode放置在新C++文件顶部的标准生物板;在这种情况下,该项目被命名为“DataSource”。如果项目名称以数字开头,那么Xcode会用第三个下划线替换这个数字。

    如果用户写这个是非法的,那么Xcode写这个不是非法的吗?

    2 回复  |  直到 9 年前
        1
  •  4
  •   Mike Seymour    13 年前

    如果用户写这个是非法的,那么Xcode写这个不是非法的吗?

    事实上,尽管“非法”可能是一个很强的词。如果这是默认行为,那么无论是谁将其配置为生成不可靠的include guard,都不知道你不应该这样做。遗憾的是,并不是每个软件开发人员(即使是开发工具的开发人员)都对他们使用的语言和工具有完全的了解。

    很多人喜欢用奇怪的下划线图案来装饰他们的护具,尽管他们不应该这样做。据推测,他们在标准库头中看到了这一点(这是应该的,因为这是保留此类名称的类型),并认为出于某种原因,他们也应该这样做。

        2
  •  3
  •   Pete Becker    13 年前

    Xcode是错误的。以下划线开头、后跟大写字母的名称和包含两个连续下划线的名称保留给实现。一直如此。