在下面的代码中,我使用函数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);
}
答案 0 :(得分:1)
问题不是参数,它的返回值,函数返回一个指针,然后指定整数变量read_data[0]
。
答案 1 :(得分:1)
我认为数组名称在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的修正。