如果我写这样的东西:
class myclass
{
#define ADD(x,y) {return x+y}
public:
}
是我班级的私人定义吗?
请注意,我在* .hpp中定义它,并且我想确保如果我将此hpp包含到其他源代码中,则其他源代码无法访问此定义。
有没有比在C ++中使用#define
可以做同样事情更好的解决方案?
使用怎么样?是不是我的班级私人?
class myclass
{
using std;
public:
}
答案 0 :(得分:6)
它不是,也永远不会。
所有预处理器命令(#...
)在读取和分析源代码之前都会被处理,所以在你放置它们的任何地方都没关系;只有序列(如果它们相互构建)和它们的使用相对位置(之前/之后)很重要。
您可以将预处理器命令想象为“从此处查找/替换”。
答案 1 :(得分:0)
您可以使用#undef来限制#define的范围。也许你甚至可以用它来限制你自己没有创建的定义的范围。