CMSG_ALIGN(i)
的值是 8 和 >=
i 的倍数的最小值是否正确,如果 i
是无符号整型变量吗?
#include <stdio.h>
int main(void)
{
int i;
for (i=0; i<50; ++i) {
printf("%d\n", CMSG_ALIGN(i));
}
}
我得到的输出:
/* i CMSG_ALIGN(i)
*
* 0 0
* [1,8] 8
* [9,16] 16
*/
最佳答案
Is it right to say the value of CMSG_ALIGN(i) is the minimum value of multiple of 8 and >=i if i is an unsigned int variable?
没有。给定值的对齐方式不一定在所有平台上都是 8
。如果它总是 8
,则根本不需要 CMSG_ALIGN()
。
您可能使用的是 64 位系统。所以它在 8 字节边界上对齐。但是如果您在 32 位平台上运行相同的代码,您可能会看到它是 4 字节对齐。
请注意 CMCG_ALIGN()
返回 size_t
。所以 %zu
是打印 size_t
值的正确格式字符串。
关于c - CMSG_ALIGN 宏的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674971/