将地址传递给函数时收到警告。警告
warning: passing argument 1 of 'writeFlashBuffer' makes pointer from integer without a cast [-Wint-conversion]
该功能看起来像
void writeFlashBuffer(uint8_t *pBuffer, uint32_t NumberSector, uint32_t addrBegin, uint32_t Size);
一种函数调用
writeFlashBuffer(*(uint8_t*)&addr, sector, 0, 1024);
变量的类型在哪里
addr - это uint32_t
sector - это uint32_t
如果添加 uint8_t*
writeFlashBuffer((uint8_t*)*(uint8_t*)&addr, sector, 0, 1024);
然后警告变为
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
看看这里
您作为第一个参数传递
*(uint8_t*)&addr
。我们从右到左。我们获取一个整数变量的地址,将其转换为所需的类型,然后取消引用。事实上,我们又回到了开始的地方。writeFlashBuffer
想要缓冲区的地址。所以也许正确的调用看起来像这样
如果 addr 正是数据。
但是如果 addr 包含确切的地址(奇怪,但它不会在 C 中发生),那么调用看起来像这样