在下面的代码中,我使用函数mraa_spi_write_buf()
收到以下警告。
警告:赋值从指针生成整数而不带强制转换 [-Wint-conversion] read_data[0] = mraa_spi_write_buf(spi, cmd, 2);
我以为数组名称衰减到 c 中的指针?
这是函数的函数声明
uint8_t * mraa_spi_write_buf (mraa_spi_context dev, uint8_t *data, int length).
#include "mraa.h"
#include <stdio.h>
#include <unistd.h>
int main()
{
uint8_t cmd[2] = {0xAA, 0xFF};
uint8_t read_data[2];
read_data[0] = mraa_spi_write_buf(spi, cmd, 2);
}
问题不在于参数,而在于返回值,函数返回一个指针,然后将其分配给整数变量read_data[0]
.
我以为数组名称衰减到 c 中的指针?
您可以使用数组名称作为指向数组第一个元素的指针,但除了这种情况之外,这不是真的。
你的函数返回 int*,所以你需要取消引用来获取值:
uint8_t* recv;
recv = mraa_spi_write_buf(spi, cmd, 2)
if( recv != NULL)
{
read_data[0] = *(mraa_spi_write_buf(spi, cmd, 2));
}
else
{
//Handle error
}
free(recv);
编辑:感谢您的更正@JeremyP。