宏的应用
2016-03-29 10:35
323 查看
<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;}
相关文章推荐
- ConcurrentHashMap和HashMap的区别
- UIScrollViewDelegate
- js 字符串转换数字
- #每日一题#腾讯笔试题
- kernel 增加自定义宏编译开关
- java中IP地址、主机名的获取
- OpenCV之霍夫变换
- X86平台:linux系统下编译配置内核并启动内核
- 有用的git使用链接
- PHP中抽象类、接口的区别与选择分析
- 算法-java(2)
- 线性回归-1-问题引入
- 调用手机打电话发信息等
- Android开发注意点及android第三方架构
- Intent.FLAG 属性大全
- spring多数据源配置
- 又一个高性能轻量级的iOS模型框架YYModel
- 设计模式--单例模式(一)懒汉式和饿汉式
- 给uefi引导的方式安装archlinux
- PHP中常见魔术方法解析