在标准库中,我发现命名空间 std
被声明为一个宏。
#define _STD_BEGIN namespace std {
#define _STD_END }
- 这是使用命名空间的最佳实践吗?
- 宏在
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/