这种写法怎么可能是对的咧!
看同事写的一个程序中有这样的关于结构体引用的方式,实在是搞不明白,这种写法怎么可能是对的啊,大致方式如下:
struct name
{
uint8_t x;
uint16_t y;
uint8_t m;
uint32_t n;
uint8_t k;
};
fun(char *p)
{
uint8_t i,j;
for(i=0;i<9;i++) // 9代表上面那个结构体的大小
{
j = buf[i]; // 怎么可能有这种引用方式咧
}
}
main()
{
struct name x={10,32768,20,327680,20};
fun((char *)(&x));
}
大致就是上面的样子了,结果是这种写法结果竟然是对的,可是有这种对结构体变量引用的方式吗,根本没管是否结构体内部是否存在对齐,真是不明白(是嵌入式工程里的,用的是芯片厂商提供的编译器,好像是基于GCC的)但不管怎样,它这种调用方式不符合C标准啊,请大家说说有这种引用方式吗? struct
[解决办法]
这么写前提必然是单字节对齐,在嵌入式系统里面设置单字节对齐是很常见的
脱离环境讨论这样写是否正确没任何意义