c++ - 将命名空间声明为宏 - C++

标签 c++ macros namespaces

在标准库中,我发现命名空间 std 被声明为一个宏。

#define _STD_BEGIN  namespace std {
#define _STD_END        }
  1. 这是使用命名空间的最佳实践吗?
  2. 宏在 Microsoft Visual Studio 9.0\VC\include\yvals.h 中声明。但是我找不到包含这个的STL文件。如果不包含,如何使用?

有什么想法..?

最佳答案

可能不是最佳实践,因为与 Vanilla 相比,它可能难以阅读 namespace声明。也就是说,请记住规则并不总是普遍适用,而且我确信在某些情况下宏可能会大大清理一切。

“但是我找不到包含这个的STL文件,如果不包含,怎么用呢?”。

所有使用这个宏的文件包括yvals.h不知何故。例如<vector>包括 <memory> , 其中包括 <iterator> , 其中包括 <xutility> , 其中包括 <climits> , 其中包括 <yvals.h> .链条可能很深,但它确实在某个点包含了它。

我想澄清一下,这只适用于标准库的这个特定实现;这绝不是标准化的。

关于c++ - 将命名空间声明为宏 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331557/

相关文章:

c++ - 在 C++ 中计算非常大的数字

c++ - 为什么其他 PC 需要一些 DLL 文件,而我自己的不需要?

c - 为 C/C++ 写一个宏 #include

C# 命名空间与指令

r - 在包中使用 ggplot2 时,讨厌的 ggplot2 命名空间冲突

c++ - sizeof(struct)... 给出错误结果,VS 2010

c++ - "most derived object"是什么意思?

c++ - 嵌套宏扩展

c++ - 如何防止宏重新定义

c# - Visual Studio 2013 不正确的命名空间错误