码迷,mamicode.com
首页 > 其他好文 > 详细

我就是喜欢用宏

时间:2016-10-17 20:29:52      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:

这宏,我写的,怎么看怎么顺眼,能用宏,为什么要写函数呢,费事不讨好,而且还有可能影响效率

不过,实话实说,看着是有点low。。。

 

如果Windows的编译器能支持gcc的那种 ({}) ,的话,这个宏我能写得更完美,

就不用像最后,还得单独一行写宏,然后再起一行if __ret 了,

那样的话,代码会更好看。

 

 1 //    判断 __src 的长度 __srcLen 是否小于 __dstLen ,如果是的话,
 2 //    那么就用 __memType 和 __tag 重新申请一块内存,否则不动,
 3 //    不动、重新申请成功,__ret 返回 1
 4 //    申请失败,__ret 返回 0
 5 //    原始地址指针PP,原始内存长度PD,目标长度DW,内存页属性DW,TAG,返回值PD
 6 #define ComperMemoryAlloc(__src, __srcLen, __dstLen, __memType, __tag, __ret)             7     do {                                                                                 8         LPVOID pv = NULL;                                                                 9         *(__ret) = 1;                                                                    10         if (*(__srcLen) < (__dstLen))                                                    11         {                                                                                12             pv = ExAllocatePoolWithTag((__memType), (__dstLen), (__tag));                13             if (pv)                                                                        14             {                                                                            15                 ExFreePoolWithTag(*(__src), (__tag));                                    16                 *(__srcLen) = (__dstLen);                                                17                 *(__src) = pv;                                                            18                 *(__ret) = 1;                                                            19             }                                                                            20             else                                                                        21             {                                                                            22                 *(__ret) = 0;                                                            23             }                                                                            24         }                                                                                25     } while (0)

 

不过,至于使用方法。。。

有点自己给自己找罪受的感觉

 1     DWORD dwRet = 0;
 2     ComperMemoryAlloc(&p, &dwLen, 200, NULL, 0, &dwRet);
 3     if (dwRet)
 4     {
 5 
 6     }
 7     else
 8     {
 9 
10     }

 

我就是喜欢用宏

标签:

原文地址:http://www.cnblogs.com/suanguade/p/5970939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!