定义全局命名空间
define global namespace
如何定义一个全局命名空间,类似于全局变量(通过extern
关键字)?我尝试了以下操作,但它不起作用:
//header
#ifndef ASD_H
#define ASD_H
namespace Goo
{
int var;
}
#endif
和这个头文件,我将包括在需要访问名称空间的所有.cpp
文件中。这行不通。如何正确地做到这一点?
默认为全局命名空间。只是不要在代码中显式地添加namespace
。
话虽如此,您问这个问题是因为您不了解名称空间是如何工作的。他们的工作是清理瞄准镜。它们不是对象。它们没有指向任何记忆。它们非常"柔软"。任何文件都可以声明命名空间,其中出现的任何类、结构、函数等都将成为该命名空间的一部分。不同的文件不需要通信,因为它们共享相同的命名空间;如果文本相同,则命名空间相同。
回复你的评论:
namespace One {
intvar1;
}
namespace Two {
int var2;
}
然后可以在其他翻译单元中访问One::var1
和Two::var2
,就像它们不在名称空间中并且您键入var1
或var2
一样-这意味着您仍然负责在必要时声明extern
,等等。
另外,如果您有一个通用的基础名称空间,您可以使用namespace Base::One
或Base::Two
。
相关文章:
- 在命名空间中使用全局命名空间中的函数
- 类与命名空间的全局实例
- 将好友从模板导出到全局命名空间
- Catalina C++:使用<cmath>标头产生错误:全局命名空间中没有名为 'signbit' 的成员
- 将以"_[a-z0-9]"开头和"using"的标识符导入全局命名空间是否定义良
- C++从 std::async 函数读取命名空间中的全局变量标志
- 为什么不允许在全局命名空间处阻止范围?
- 如何在命名空间中声明外部全局,然后定义它?
- 运算符<<依赖于参数的查找不在全局命名空间中查找
- 我可以停止 GCC 将标准库名称包含在全局命名空间中吗?
- 在C 中将全局函数包括在命名空间中
- 为什么在全局范围以及命名空间std中定义了size_t
- 如何处理警告 C4177:#pragma 'float_control' 只能在全局范围或命名空间范围内使用
- "uintmax_t":不是"全局命名空间"的成员
- C++项目中的全局命名空间
- 使用 "::member" 引用全局命名空间有什么用吗?
- 在全局命名空间中重载不依赖于用户定义类型的标准定义类型的运算符是否格式正确?
- 命名空间中的全局变量会导致"undefined reference to"
- 在C 中重新解析命名空间内的全局类型
- 命名空间全局变量丢失值 (C++)