加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中使用命名空间指令的正确方法

发布时间:2020-12-16 07:24:28 所属栏目:百科 来源:网络整理
导读:在各种权威来源中,我看到了使用命名空间的各种方法. C标准没有关注命名空间的正确使用. 假设我们有以下代码: example.h文件 namespace Example { class MyClass { public: MyClass(); } } 以下是两种实施方式: example1.cpp #include "example.h"using nam
在各种权威来源中,我看到了使用命名空间的各种方法.
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’

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读