另一個問題的答案是: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或其他此類函數接收