我有一个包含一些类型定义的小命名空间,我用它来使我的代码看起来更干净。但是我不想在每个使用其中一种类型的文件中添加“using namespace ...”行,毕竟我已经为文件添加了#include。
MYFILE.CPP:的
#include "typedefs.h"
void Bob()
{
IntList^ list = gcnew IntList;
}
typedefs.h:的
namespace Typedefs
{
typedef List<int> IntList;
typedef array<int> IntArray;
typedef List<Byte> ByteList;
typedef array<Byte> ByteArray;
typedef List<String^> StringList;
typedef array<String^> StringArray;
}
using namespace Typedefs;
在命名空间声明后立即添加“using namespace”行是否可以接受?如果没有,为什么不呢?
答案 0 :(得分:3)
这是可能的,但我不认为这是明智的。它只是通过在任何地方公开其内容来击败命名空间的整个目的。如果您希望不必指定Typedefs::
或using Typedefs::xxx;
或using namespace Typedefs;
,我根本就不会创建名称空间。
答案 1 :(得分:2)
使用unnamednamespace。如果您希望名称仅对包含标题的文件可见
namespace {
int i = 10;
}
上面的与下面的代码
具有相同的效果namespace randomName {
int i = 10;
}
using randomName;
所以任何其他文件都无法访问任何内容。
答案 2 :(得分:1)
使用'using namespace XXX;'指向头文件通常被认为是一个坏主意,因为它确实打破了首先拥有命名空间的想法。它很容易导致命名冲突,引入命名空间应该避免。
我的建议 - 不要这样做,如果有必要,请将它们放入相应的源文件(.cpp)中。
答案 3 :(得分:0)
你可以在任何命名空间之外定义你的新类型,或者我错过了什么?