我想知道命名空间是否可以拆分,或者命名空间的定义是否必须在单个块中。为了说明我的意思:
namespace test
{
//declare a bunch of stuff here
int a;
}
在这里,我们做一些其他的事情,比如声明一个类或其他什么
class T
{
};
这里从上面继续命名空间,扩展它
namespace test
{
//declare a bunch of additional stuff here
int b;
T val;
}
在这个例子中,命名空间test
被使用了两次,这是否意味着它test
被第二个定义扩展了?当我在 gcc 中这样使用它时,它按预期工作。我可以访问所有变量,test::...
就好像它是在单个命名空间中定义的一样。当然这并没有使其成为标准,所以我想知道这是否符合标准。
我也很惊讶我什至没有收到警告之类的。但这是否意味着您可能会意外使用一个已经使用过的名称而没有开始意识到它从而扩展它?