从不兼容的指针类型 [-Wincompatible-pointer-types] 类型传递 'HAL_I2C_Master_Transmit' 的参数 3
Type passing argument 3 of 'HAL_I2C_Master_Transmit' from incompatible pointer type [-Wincompatible-pointer-types]
我正在尝试将 HAL_I2C_Master_Transmit 与如下所示的代码一起使用:
uint8_t *pData;
pData[0]=0xF3;
if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, &pData, 1, 100) != HAL_OK) {...}
我收到以下警告:
Type passing argument 3 of 'HAL_I2C_Master_Transmit' from incompatible
pointer type [-Wincompatible-pointer-types]
我做错了什么?
而不是 &pData
您需要通过 pData
。现在你将指针传递给指针,它当然不兼容。也是错的。
所以函数调用应该是:
if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, pData, 1, 100) != HAL_OK) {...}
虽然您没有显示 HAL_I2C_Master_Transmit
函数的 definition/declaration 是什么,但看起来(从 quick Google search 来看)第三个参数应该是 uint8_t*
.
在你提供的代码中,pData
已经是这样的指针,所以你不需要传递它的地址 - 这使得参数成为 指针到指针.
因此,按照给定的声明,只需从您的调用中删除 &
:
if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, /*&*/pData, 1, 100) != HAL_OK) {...}
我正在尝试将 HAL_I2C_Master_Transmit 与如下所示的代码一起使用:
uint8_t *pData;
pData[0]=0xF3;
if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, &pData, 1, 100) != HAL_OK) {...}
我收到以下警告:
Type passing argument 3 of 'HAL_I2C_Master_Transmit' from incompatible pointer type [-Wincompatible-pointer-types]
我做错了什么?
而不是 &pData
您需要通过 pData
。现在你将指针传递给指针,它当然不兼容。也是错的。
所以函数调用应该是:
if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, pData, 1, 100) != HAL_OK) {...}
虽然您没有显示 HAL_I2C_Master_Transmit
函数的 definition/declaration 是什么,但看起来(从 quick Google search 来看)第三个参数应该是 uint8_t*
.
在你提供的代码中,pData
已经是这样的指针,所以你不需要传递它的地址 - 这使得参数成为 指针到指针.
因此,按照给定的声明,只需从您的调用中删除 &
:
if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, /*&*/pData, 1, 100) != HAL_OK) {...}