共同体是有问题的,主要是字节对齐会产生空洞,而且不同处理器的编译器还不同.
比方说:
struct a{
uint8 i;
uint32 j;
}
用共同体,这个数组是5个字节呢,还是6个字节,还是8个字节?
就我们常用的keil c51,MDK/IAR for ARM而言,就是不一样的.
比较保险,就是强制指针(uint8 *)来取地址,然后用sizeof也计算长度.
不过,如果串口缓冲的这方有字节空洞,而另一方是没有,也是问题(比方说51 vs ARM的串口通信或者51 vs X86)....................
|