在#define开头使用下划线表示包含警戒

时间:2013-04-25 01:08:15

标签: c++ xcode

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

然后有this comment to this question,第一个是@metal,它说你在创建包含警卫时也不能使用这样的名字。

然而,我很好奇为什么Xcode会自动创建包含新C ++文件保护的内容:

#ifndef __DataSource__File__
#define __DataSource__File__

#include <iostream>

#endif 

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

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

2 个答案:

答案 0 :(得分:3)

  

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

事实上,虽然“非法”可能是一个强有力的词。如果这是默认行为,那么无论是谁配置它来生成狡猾包括警卫都不知道你不应该这样做。遗憾的是,并非每个软件开发人员(甚至那些制作开发工具的人)都对他们使用的语言和工具有完整的了解。

很多人喜欢装饰他们的包括带有奇怪的下划线图案的守卫,即使他们不应该。据推测,他们认为它是在标准库头文件中完成的(因为它应该是,因为这是保留这些名称的东西),并假设他们应该出于某种原因做同样的事情。

答案 1 :(得分:1)

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