定义全局命名空间

define global namespace

本文关键字:命名空间 全局 定义      更新时间:2023-10-16

如何定义一个全局命名空间,类似于全局变量(通过extern关键字)?我尝试了以下操作,但它不起作用:

//header
#ifndef ASD_H
#define ASD_H
namespace Goo
{
    int var;
}
#endif

和这个头文件,我将包括在需要访问名称空间的所有.cpp文件中。这行不通。如何正确地做到这一点?

默认为全局命名空间。只是不要在代码中显式地添加namespace

话虽如此,您问这个问题是因为您不了解名称空间是如何工作的。他们的工作是清理瞄准镜。它们不是对象。它们没有指向任何记忆。它们非常"柔软"。任何文件都可以声明命名空间,其中出现的任何类、结构、函数等都将成为该命名空间的一部分。不同的文件不需要通信,因为它们共享相同的命名空间;如果文本相同,则命名空间相同。

回复你的评论:

namespace One {
    intvar1;
}
namespace Two {
    int var2;
}

然后可以在其他翻译单元中访问One::var1Two::var2,就像它们不在名称空间中并且您键入var1var2一样-这意味着您仍然负责在必要时声明extern,等等。

另外,如果您有一个通用的基础名称空间,您可以使用namespace Base::OneBase::Two