在include保护的#define开头使用下划线
Using underscores at the start of a #define for an include guard
这个答案指向参考资料,说明你不应该使用两个下划线后跟一个大写字母。
然后是这个问题的注释,第一个是@metal,它说你也不能在创建include守卫时使用这样的名称。
然而,我很好奇为什么Xcode在自动为新的c++文件创建包含保护时确实这样做:
#ifndef __DataSource__File__
#define __DataSource__File__
#include <iostream>
#endif
这是Xcode放在新c++文件顶部的标准生物模板;在本例中,项目被命名为"DataSource"。如果项目名称以数字开头,Xcode会用第三个下划线替换这个数字。
如果用户写这个是非法的,那么Xcode写这个不是非法的吗?
如果用户写这个是非法的,那么Xcode写这个不是非法的吗?
的确,尽管"非法"可能是一个相当强烈的词。如果这是默认行为,那么将其配置为生成可疑的include守卫的人不知道不应该这样做。遗憾的是,并不是每个软件开发人员(甚至是那些开发工具的人)都完全了解他们使用的语言和工具。
很多人喜欢用奇怪的下划线来装饰他们的include守卫,即使他们不应该这样做。据推测,他们在标准库头文件中看到了这一点(应该是这样,因为这是保留这些名称的类型),并假设出于某种原因他们也应该这样做。Xcode错误。以下划线开头后跟大写字母的名称以及包含两个连续下划线的名称保留给实现使用。一直都是。
相关文章:
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 下划线不会与"发送输入"一起显示C++
- 在 QTextEdit C++ 中为特定行添加下划线
- 导出函数中有多少下划线('_')(C++
- 有没有选项不自动所有前导下划线 _ 以导出 emscripten 中的函数?
- 删除数字并在C++中保留字符串的下划线
- c++ 函数中额外的下划线名称
- 由以下划线开头的标识符引起的错误的真实示例
- 在C 中,Haskell下划线有其他选择吗?
- 使用与号后跟下划线命名的变量是什么意思?
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- 用下划线填充空格
- 在Typedef结构中,下划线意味着什么
- 为什么非下划线名称保留给 UDL 的实现,而不是相反
- 下划线、名称和文字运算符
- 检查两个彼此相邻的两个下划线
- 使用查找检查,如果我的字符串中有下划线
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- 用户定义的文字、下划线和全局名称
- 在include保护的#define开头使用下划线