来自非常生锈的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);