首页 > CLucene, 程序人生 > CLucene源码剖析(二) 命名空间的灵活使用

CLucene源码剖析(二) 命名空间的灵活使用

命名空间(namespace)是C++中新提出的一个特性,它的好处就是有效地避免了命名的冲突。在C++项目中,灵活地使用命名空间,可以在避免代码命名冲突的基础上,提高代码的可读性。在CLucene中,命名空间可以通过宏来控制,如果定义了DISABLE_NAMESPACE这个宏,那么整个项目就不使用空间,如果没有定义这个宏,那么命名空间的定义便是有效的。
下面是CLucene中关于命名空间的宏的定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS)
 
#elif !defined(DISABLE_NAMESPACE)
	#define CL_NS_DEF(sub) namespace lucene{ namespace sub{
	#define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 {
 
	#define CL_NS_END }}
	#define CL_NS_END2 }}}
 
	#define CL_NS_USE(sub) using namespace lucene::sub;
	#define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2;
 
	#define CL_NS(sub) lucene::sub
	#define CL_NS2(sub,sub2) lucene::sub::sub2
#else
	#define CL_NS_DEF(sub)
	#define CL_NS_DEF2(sub, sub2)
	#define CL_NS_END
	#define CL_NS_END2
	#define CL_NS_USE(sub)
	#define CL_NS_USE2(sub,sub2)
	#define CL_NS(sub)
	#define CL_NS2(sub,sub2)
#endif

由上面的定义可以看出,如果要使用命名空间,CLucene中最外层的命名空间是lucene,其它的命名空间可以自己指定。可以用CL_NS_DEF和CL_NS_END相关的宏搭配来定义命名空间,可以使用CL_NS_USE相关的宏来说明要用某个命名空间。用CL_NS相关的宏来引用命名空间。如果不想使用命名空间,直接定义DISABLE_NAMESPACE宏就可以了。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须在 登录 后才能发布评论.