printf输出类型:
- %d它的意思是按十进制整型数据的实际长度输出。
- %u输出无符号整型(unsigned)。输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。
- %ld它的意思是输出长整型数据。
- %p 输出变量的内存地址。
优化对齐问题:
在ESP32上,编译器默认按照32位进行对齐。这在解析文件的时候会出现很多问题,可以使用 __attribute__((packed)) 来取消优化。下例最后两个 uint8_t不加关键字会被优化的多俩字节。
typedef struct
{
uint8_t ucFmtID[4];
uint32_t uiSize;
uint16_t usFormatTag;
uint16_t usChannels;
uint32_t uiSamplePerSec;
uint32_t uiAvgBytesPerSec;
uint16_t usBlockAlign;
uint16_t usBitsPerSample;
uint8_t ucAddtional[2];
} __attribute__((packed)) FmtChunk_T;