c++ namespace

名字空间:比如一个公司有研发部和测试部,两个部门各有一个人叫做张三,有一天他们其中的一个人在双十一买了一件东西,快递员送到的时候喊张三的话就有点模糊了,搞不清楚是喊的哪个张三,如果快递小哥说的是“测试部的张三”,那肯定就清楚了。

名字空间的作用:主要用来避免名字污染---即相同的函数名

匿名名字空间:野孩子,没人管的都属于匿名名字空间,访问的话请用::表示作用域

名字空间指令:using namespace std;   //cout << "Hello world" << endl;

名字空间声明:using std::cout;   //cout << "Hello world" << std::endl;

注意:1)内层标示符隐藏外层同名标示符

            2)嵌套的名字空间需要逐层分解

            3)可以通过名字空间别名书写简化 - namespace ns_three = ns1::ns2::ns3;

比较好的名字空间的管理,请见ACE相关Versioned_Namespace.h

//Versione.h
#ifndef __VERSION_H__
#define __VERSION_H__

#define TOSTRING(s)       #s
#define STRINGIFY(s)      TOSTRING(s)

#define ACE_MAJOR_VERSION  6
#define ACE_MINOR_VERSION  2
#define ACE_BETA_VERSION   6
#define ACE_VERSION        STRINGIFY(ACE_MAJOR_VERSION ##.## ACE_MINOR_VERSION ##.## ACE_BETA_VERSION)

#endif


//Versioned_Namespace.h
#ifndef __VERSION_NAMESPACE_H__
#define __VERSION_NAMESPACE_H__

#ifndef __CONFIG_H__
#  error This header is only meant to be included by or after "config.h".
#endif

#ifdef ACE_HAS_VERSIONED_NAMESPACE
#  ifndef ACE_VERSIONED_NAMESPACE_NAME
#    include "version.h"
#    define ACE_MAKE_VERSIONED_NAMESPACE_NAME_IMPL(MAJOR,MINOR,BETA) ACE_ ## MAJOR ## _ ## MINOR ## _ ## BETA
#    define ACE_MAKE_VERSIONED_NAMESPACE_NAME(MAJOR,MINOR,BETA) ACE_MAKE_VERSIONED_NAMESPACE_NAME_IMPL(MAJOR,MINOR,BETA)
#    define ACE_VERSIONED_NAMESPACE_NAME ACE_MAKE_VERSIONED_NAMESPACE_NAME(ACE_MAJOR_VERSION,ACE_MINOR_VERSION,ACE_BETA_VERSION)
#  endif  //end of ACE_VERSIONED_NAMESPACE_NAME
#  define ACE_BEGIN_VERSIONED_NAMESPACE_DECL namespace ACE_VERSIONED_NAMESPACE_NAME {
#  define ACE_END_VERSIONED_NAMESPACE_DECL } using namespace ACE_VERSIONED_NAMESPACE_NAME;
#else //!ACE_HAS_VERSIONED_NAMESPACE
#  define ACE_VERSIONED_NAMESPACE_NAME
#  define ACE_BEGIN_VERSIONED_NAMESPACE_DECL
#  define ACE_END_VERSIONED_NAMESPACE_DECL
#endif  //end of ACE_HAS_VERSIONED_NAMESPACE

#endif


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值