另一个问题的答案是:Strict aliasing rule and 'char *' pointers表示使用char*检查T对象的二进制内容是可以的。但是使用T*覆盖char缓冲区并不好。 现在我有一个函数,它将二进制数据带到char缓冲区。并在阅读时做这样的事情: // unsigned char *pData used to walk through the buffer.
uint32
#include "stdio.h"
/* array to store data receeived from CAN Bus */
unsigned char a[8] = {0xCD, 0xEF, 0x12, 0x34, 0x50, 0x00, 0x00, 0x00};
typedef struct {
unsigned int a:12;
unsigned
相关的,但是从有些不同,Do any compilers transfer effective type through memcpy/memmove 在C89,memcpy和memmove需要表现得好像源和目标正在使用的字符类型访问,复制的所有位源到目的地而不考虑被复制的数据的类型。 C99更改了语义,因此如果将具有有效类型的对象复制到没有声明类型的存储器(通常是从malloc或其他此类函数接收