宏的应用

来源:互联网 发布:浙江淘宝网络有限公司 编辑:程序博客网 时间:2024/06/01 23:53
<pre name="code" class="cpp">#define DU_MACRO_NEW_BASIC_ARRAY(p, T, n) p = new T[(n)]; memset(p, 0, sizeof(T) * (n));#define DU_MACRO_ARRAY_ELEMENT_COUNT(ary) (sizeof(ary) / sizeof(ary[0]))#define DU_MACRO_SAFE_DELETE_PTR(p)         if (NULL != (p)) {delete (p); (p) = NULL;}#define DU_MACRO_SAFE_DELETE_PTR_ARRAY(p)   if (NULL != (p)) {delete[] (p); (p) = NULL;}#define DU_MACRO_SAFE_DELETE_OBJECT(h)      if (NULL != (h)) {::DeleteObject(h);}#define DU_MACRO_SAFE_CLOSE_HANDLE(h)       if (NULL != (h)) {::CloseHandle(h);}#define DU_MACRO_SAFE_DESTROY_WND_PTR(p)    if (NULL != (p)) {if (NULL != (p)->m_hWnd) (p)->DestroyWindow();}#define DU_MACRO_ASSERT_FALSE_RETURN_FALSE(p)   if (!(p)) {ASSERT(FALSE); return FALSE;}#define DU_MACRO_ASSERT_NULL_RETURN_FALSE(p)    if (NULL == (p)) {ASSERT(FALSE); return FALSE;}#define DU_MACRO_ASSERT_NULL_RETURN_NULL(p)     if (NULL == (p)) {ASSERT(FALSE); return NULL;}#define DU_MACRO_ASSERT_NULL_CONTINUE(p)        if (NULL == (p)) {ASSERT(FALSE); continue;}#define DU_MACRO_ASSERT_NULL_BREAK(p)           if (NULL == (p)) {ASSERT(FALSE); break;}#define DU_MACRO_ASSERT_NULL_RETURN(p)          if (NULL == (p)) {ASSERT(FALSE); return;}#define DU_MACRO_SET_GET(T, N, V) \public : \    T Get##V() const {return  m_##N##V;} \    T& Get##V##Ref() {return m_##N##V;} \    T* Get##V##Ptr() {return &m_##N##V;} \    void Set##V(const T t) {m_##N##V = (t);} \    void Set##V##Ref(const T& t) {m_##N##V = (t);} \    void Set##V##Ptr(const T* p) {m_##N##V = (*p);}#define DU_MACRO_GET_OBJECT_POINTER(T, N, V) \public: \    T * Get##V##Ptr() {return &m_##N##V;}#define DU_MACRO_SET_GET_POINTER(T, M) \public : \    T * Get##M() const {return m_p##M;} \    void Set##M(T * m) {m_p##M = m;}#define DU_MACRO_SET_GET_STRING(M) \public : \    LPCTSTR Get##M() const {return m_str##M;} \    void Set##M(LPCTSTR m) {m_str##M = m;}


0 0