嵌入式技术论坛
直播中

张国厚

7年用户 1386经验值
私信 关注
[问答]

关于RT_ALIGN_DOWN字节对齐问题

我在rtdef.h中看到了如下字节对齐的宏定义。

#define RT_ALIGN(size, align) (((size) + (align) - 1) & ~((align) - 1))
#define RT_ALIGN_DOWN(size, align) ((size) & ~((align) - 1))
我的问题是,当size的大小小于align大小时,计算后的数据就是size的大小。而不是想要的大小。
正常情况下,如果这个size都是指针的话我认为是不会有问题的。
但是这个宏用作其他地方,应该就会有问题。
所以这个是否需要增加注释,指明size大小不应该小于align的大小。
或者明确使用范围呢。

回帖(2)

孙成红

2023-8-20 11:43:55
这类宏定义通常用于内存对齐操作。
举报

刘敏

2023-10-11 11:36:13
您所说的情况是存在的,当size的大小小于align大小时,RT_ALIGN_DOWN计算后的结果就是size的大小。这是因为RT_ALIGN_DOWN的作用是将size向下对齐到align的整数倍,因此如果size本身就小于align,则对齐后大小还是size本身。

为了避免误用,建议在使用RT_ALIGN_DOWN宏时,添加相关注释,指明其使用范围以及注意事项,使程序更易于理解和维护。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分