我想将使用 gcc 的项目移植到 IAR 编译器,但 IAR 抱怨使用 void* 作为形式参数的几个函数。
struct
{
uint16_t ConnectionHandle;
uint8_t Reason;
}DisconnectParams;
函数原型是
bool Bluetooth_HCI_SendControlPacket(BT_StackConfig_t* const StackState,
const uint16_t OpCode,
const uint8_t Length,
const void* Data);
使用方法是:
Bluetooth_HCI_SendControlPacket(StackState, (OGF_LINK_CONTROL | OCF_LINK_CONTROL_DISCONNECT), sizeof(DisconnectParams), &DisconnectParams);
这里抱怨错误[Pe167]:“struct *”类型的参数与“void const *”类型的参数不兼容
还有一个地方
static inline void SDP_WriteData8(void** BufferPos,const uint8_t Data)
{
*((uint8_t*)*BufferPos) = Data;
*BufferPos += sizeof(uint8_t);
}
错误[Pe852]:表达式必须是指向完整对象类型的指针。据我所知, void* 可以接受任何指针,如何更改代码以消除这些错误?谢谢!
克里斯