Jay*_*Jay 6 c++ typedef namespaces using directive
在.cpp文件中,是否有任何差异/偏好?
// file scope outside any namespace
using X::SomeClass;
typedef SomeClass::Buffer MyBuf;
Run Code Online (Sandbox Code Playgroud)
V/S
namespace { // anonymous
using X::SomeClass;
typedef SomeClass::Buffer MyBuf;
}
Run Code Online (Sandbox Code Playgroud)
我会说第二种用法是相当不常见的,至少在我到目前为止看到的代码中(我已经看到了很多C++代码).你能解释一下第二种技术背后的原因是什么吗?
您通常会在C++实现文件中使用匿名命名空间来实现"静态"在C(或C++中)中所做的相同的事情,但我们会掩饰它,即限制符号对当前翻译单元的可见性.typedef实际上并不会生成为链接器导出的符号,因为它们不会在您可以链接的任何具体内容中创建任何"具体".
我的推荐?我会用第一个符号.第二个增加了不必要的复杂性,在我看来,不会给你买任何东西.