社区
C++ 语言
帖子详情
帮忙看下这个宏是什么意思?
wangpeng_118
2011-09-15 03:52:11
#if !defined ACE_MALLOC_ROUNDUP
# define ACE_MALLOC_ROUNDUP(X, Y) ((X) + ((Y) - 1) & ~((Y) - 1))
#endif
...全文
137
11
打赏
收藏
帮忙看下这个宏是什么意思?
#if !defined ACE_MALLOC_ROUNDUP # define ACE_MALLOC_ROUNDUP(X, Y) ((X) + ((Y) - 1) & ~((Y) - 1)) #endif
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2011-09-16
打赏
举报
回复
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
翻越寒武
2011-09-16
打赏
举报
回复
[Quote=引用 8 楼 wangpeng_118 的回复:]
我在别的论坛上提问,下面是正确的回答,请大家参考:
“这个宏的作用是将x对齐到8的倍数。
取反(8-1)后&,是为了把地址最后3个bit置0;
前面那个地址+(8-1)的操作是为了保证这个取整只会空出几个字节而不是覆盖之前的数据。”
[/Quote]
是先求+结果后再与取反后的值求位与吧
qq120848369
2011-09-16
打赏
举报
回复
向上取整额。
wangpeng_118
2011-09-16
打赏
举报
回复
我在别的论坛上提问,下面是正确的回答,请大家参考:
“这个宏的作用是将x对齐到8的倍数。
取反(8-1)后&,是为了把地址最后3个bit置0;
前面那个地址+(8-1)的操作是为了保证这个取整只会空出几个字节而不是覆盖之前的数据。”
wangpeng_118
2011-09-15
打赏
举报
回复
[Quote=引用 5 楼 liuxingjiaofu 的回复:]
相当于一个函数的功能
x+(y-1)&(~(y-1))=x
[/Quote]
我感觉也是,这个宏实际就是x的值,但是ACE里面为什么要定义一个这样的宏?有什么作用呢?
wangpeng_118
2011-09-15
打赏
举报
回复
代码里是这样用的:
return ACE_MALLOC_ROUNDUP( sizeof(*this), ACE_MALLOC_ALIGN);
其中:#define ACE_MALLOC_ALIGN 8
看上面的代码,这个宏好像是计算长度的作用。
一无所有自知之明
2011-09-15
打赏
举报
回复
相当于一个函数的功能
x+(y-1)&(~(y-1))=x
turing-complete
2011-09-15
打赏
举报
回复
定义一个带两个参数的宏,进行。。。运算
yinlijun2001
2011-09-15
打赏
举报
回复
还是X
((Y) - 1) & ~((Y) - 1))=0
clannadgirl
2011-09-15
打赏
举报
回复
写得很清楚了啊
bdmh
2011-09-15
打赏
举报
回复
这个宏执行 ((X) + ((Y) - 1) & ~((Y) - 1)),
比如代码中有
ACE_MALLOC_ROUNDUP(1,2),那就把上面x和y替换为1和2计算
excel的使用
再比如,公式: =if(SUM(A1:A5>0,SUM(A1:A5),0) 此式就利用了嵌套函数,意思是,当A1至A5的和大于0时,返回这个值,如果小于0,那么就返回0。 还有一点要提醒你注意:以上的符号均为半角,而且IF与括号之间...
请
帮忙
解答,十分谢谢。下面的C++代码的宏定义是
什么意思
?
#define DYNOBJECT_IMPLEMENT_DYNAMIC(name, parent, code) \ name::name(const char* b) : parent(#parent, b) \ {
如何开发框架(Framework):以ListView为例
Android从View衍生出一个...于是,规划一个小框架来达成这个目标,对App开发者而言,这个小框架可以
帮忙
很多。App开发者可以从这个小框架衍生出子类,就能轻易开发出漂亮的ListBox了。本课程就来详细明ListView框架。
c语言中ch <='9' && ch>='0'是
什么意思
,能
帮忙
解释一下这段c语言
什么意思
吗?
(c)-'0':-1) //宏定义 void f1(char ch) //f1功能函数 { switch(ch) { case '0':printf("0"); //如果为字符0,则打印字符0,但不跳出 case '1':printf("1"); //如果为字符1,则打印字符1,但不跳出 case '2':printf...
c语言的宏定义与java的注解_C语言宏定义#define的理解与资料整理!希望你能get到!...
它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就都认识这个宏了;也可以把任何东西定义成宏。因为编译器会在预编译的时候用真身替换替身,而在我们的代码里面却又用常常用替身来
帮忙
。看例子:#define ...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章