在各种权威来源中,我看到了使用命名空间的各种方法.
C标准没有关注命名空间的正确使用.
假设我们有以下代码:
example.h文件
namespace Example {
class MyClass
{
public:
MyClass();
}
}
以下是两种实施方式:
example1.cpp
#include "example.h"
using namespace Example;
MyClass::MyClass();
example2.cpp
#include "example.h"
namespace Example
{
MyClass::MyClass();
}
两个实现都在gcc中编译时没有警告,因此,它是代码纯度或美观的问题.但无论如何,这两种方法的优点和缺点是什么?
最佳答案 这两个例子不一样:
第一个(使用命名空间Example;)将让编译器看到当前命名空间中所有使用的命名空间. (意味着除非与其他命名空间存在歧义,否则不需要指定命名空间)
第二个(名称空间示例{…})将向命名空间添加符号和代码.但是从名称空间外部看,它不会被视为当前名称空间中的名称空间.
>您无需为当前命名空间声明使用.
>一个块只能在一个命名空间中,但可以使用多个命名空间.
例如:
//consider the following namespace
Namespace A
{
void f()
{
}
}
从主要你有两个选择:
调用命名空间
int main()
{
A::f();
...
}
或添加使用和调用没有命名空间.
using namespace A;
int main()
{
f();
...
}
但是你不能将main添加到命名空间中,因为编译器找不到它:
namespace A {
int main()
{
f();
...
}
}
会导致错误:
undefined reference to `main’