peakzhang 发表于 2007-12-11 21:46:49

关于ACE_BEGIN_VERSIONED_NAMESPACE_DECL的含义

我是一个初学者,这几天看ACE代码,发现很多代码中都包含如下一个宏,但是一致没找到定义得位置,请各位前辈赐教:
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
ACE_END_VERSIONED_NAMESPACE_DECL

peakzhang 发表于 2007-12-11 21:46:58

# define ACE_BEGIN_VERSIONED_NAMESPACE_DECL namespace ACE_VERSIONED_NAMESPACE_NAME {
# define ACE_END_VERSIONED_NAMESPACE_DECL } \
using namespace ACE_VERSIONED_NAMESPACE_NAME;

lishuai_girl 发表于 2008-3-23 14:01:23

为什么没有人回答这个问题呀?

这个问题我也不懂。请高人解释

adxis 发表于 2009-12-23 20:48:01

#include "ace/Version.h"

// Make name 的實作方式:
#define ACE_MAKE_VERSIONED_NAMESPACE_NAME_IMPL(MAJOR,MINOR,BETA) ACE_ ## MAJOR ## _ ## MINOR ## _ ## BETA

// 轉呼叫Make name的實作
#define ACE_MAKE_VERSIONED_NAMESPACE_NAME(MAJOR,MINOR,BETA) ACE_MAKE_VERSIONED_NAMESPACE_NAME_IMPL(MAJOR,MINOR,BETA)

// 將用 Version.h 中的 ACE_MAJOR_VERSION, ACE_MINOR_VERSION 與 ACE_BETA_VERSIONmacro 傳給上一個 macro
#define ACE_VERSIONED_NAMESPACE_NAME ACE_MAKE_VERSIONED_NAMESPACE_NAME(ACE_MAJOR_VERSION,ACE_MINOR_VERSION,ACE_BETA_VERSION)
# endif/* !ACE_VERSIONED_NAMESPACE_NAME */

// 下面兩個 macro 將上面做出來的 ACE_VERSIONED_NAMESPACE 跟 C++ 關鍵字 namespace 與 { } 結合起來
# define ACE_BEGIN_VERSIONED_NAMESPACE_DECL namespace ACE_VERSIONED_NAMESPACE_NAME {
# define ACE_END_VERSIONED_NAMESPACE_DECL } \
using namespace ACE_VERSIONED_NAMESPACE_NAME;

假設 Version.h 裡面定義如下
#define ACE_MAJOR_VERSION 5
#define ACE_MINOR_VERSION 5
#define ACE_BETA_VERSION 2

把 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 與 ACE_END_VERSIONED_NAMESPACE_DECL 展開就是

namespace ACE_5_5_2 {
    // code ...
}
using namespace ACE_5_5_2;
页: [1]
查看完整版本: 关于ACE_BEGIN_VERSIONED_NAMESPACE_DECL的含义