假设我有这样一段代码(并假设填充是按照我在注释中说的那样插入的):
#include "stdint.h"
struct A
{
uint8_t x;
// 3 bytes of padding
uint32_t y;
};
void foo(struct A* a)
{
a->x = 0;
}
编译器是否允许清除函数foo中的填充字节或对填充字节进行任何操作?
https://en.cppreference.com/w/c/language/object在这个问题上保持沉默,这让我相信编译器是允许这样做的...
我想知道编译器是否允许这样做的原因是我想比较两个结构体的memcmp
,并且我想知道我可以做出什么样的假设...