它在该类私有的类中定义

Is defines inside a class private to that class?

本文关键字:定义      更新时间:2023-10-16

如果我这样写:

class myclass
{
#define ADD(x,y) {return x+y}
public:
}

是我的类的私有定义吗?

请注意,我是在*.hpp中定义它的,我想确保如果我将这个hpp包含到另一个源代码中,其他源代码不能访问这个定义。

有更好的解决方案比使用#define在c++可以做同样的事情?

使用呢?这是我们班的隐私吗?

class myclass
{
using std;
public:
}

事实并非如此,也永远不可能如此。

所有的预处理器命令(#...)都是在源代码被读取和分析之前处理的,所以你把它们放在哪里并不重要;只有顺序(如果它们相互建立)和它们使用的相对位置(在之前/之后)重要。

你可以把预处理器命令想象成类似于"从这里开始查找/替换"的命令。

可以使用#undef来限制#define的作用域。也许您甚至可以使用它来限制不是您自己创建的定义的范围。