C指针参数不匹配汇编警告



来自非常生锈的C想要成为程序员的快速问题。我有以下方案

avr -gcc -wall -os -df_cpu = 8000000 -mmcu = atmega328p -c mirf.c -o mirf.o mirf.c:在功能" mirf_config"中:mirf.c:76:20:警告:通过 来自不兼容指针类型的" mirf_set_taddr"的参数1 mirf_set_taddr(& addr(; ^来自mirf.c的文件中:27:0:mirf.h:52:13:注意:预期'uint8_t *',但参数为'uint8_t( *([5] [5]' extern void mirf_set_taddr(uint8_t * adr(;

void mirf_config() 
// Sets the important registers in the MiRF module and powers the module
// in receiving mode
{
uint8 addr[5] = {0xA0,0xA1,0xA2,0xA3,0xA4};       
mirf_set_TADDR(&addr); // HERE!!
// Set RF channel
mirf_config_register(RF_CH,mirf_CH);
// Set length of incoming payload 
mirf_config_register(RX_PW_P0, mirf_PAYLOAD);
// Start receiver 
PTX = 0;        // Start in receiving mode
RX_POWERUP;     // Power up in receiving mode
mirf_CE_hi;     // Listening for pakets
}
void mirf_set_TADDR(uint8_t * adr)
// Sets the transmitting address
{
    mirf_write_register(TX_ADDR, adr,5);
}

我如何摆脱警告并正确将指针发送给5个字节?

谢谢!

您需要知道的就在这里:

mirf.h:52:13:注意:预期的" uint8_t",但参数是类型'int (([5]’extern void mirf_set_taddr(uint8_t * adr(;

mirf_set_TADDR函数期望指向uint8_t的指针(即uint8_t *(,但是您将其传递给数组的地址(即uint8_t (*)[5](。阵列传递到函数时,段落到第一个元素的地址,因此请删除操作员地址:

mirf_set_TADDR(addr); 

最新更新