Я хочу передать массив в функцию обратного вызова, но я всегда получаю ноль (иногда символ мусора) возврата call_print()
.Мой код находится в двух отдельных файлах ниже, и мне нравится держать его таким.
file1.c
#include <myheader.h>
uint8_t dummy[6] = {0x30, 0x30, 0x31, 0x31, 0x32, 0x32};
void dcallback(uint8_t **outputBuff)
int main(void)
{
slave(dcallback);
}
void dcallback(uint8_t **outputBuff)
{
*outputBuff = dummy;
}
file2.c
#include <myheader.h>
static void (*data_callback)(uint8_t **output_buffer);
uint8_t **output_buffer;
void slave(void (*data_callback_in)(uint8_t **output_buffer))
{
int i;
data_callback = data_callback_in;
data_callback(output_buffer);
for(i=0 ; i<6 ; i++)
{
call_print( **(output_buffer + i));
}
}
Когда я изменяю код, как вы можете видеть ниже, я получаю '0 1 2 3 4 5».Это кажется правильным результатом, но это не то, что я хочу.Я хочу передать массив, чтобы я мог легко указать указатель на другой массив.Я думал, что допустил ошибку при работе с указателем.
file1.c
#include <myheader.h>
uint8_t dummy[6] = {0x30, 0x30, 0x31, 0x31, 0x32, 0x32};
void dcallback(uint8_t *outputBuff)
int main(void)
{
slave(dcallback);
}
void dcallback(uint8_t *outputBuff)
{
int x;
for(x=0 ; x<6 ; x++)
{
*outputBuff = x;
}
}
file2.c
#include <myheader.h>
static void (*data_callback)(uint8_t *output_buffer);
uint8_t output_buffer[6];
void slave(void (*data_callback_in)(uint8_t *output_buffer))
{
int i;
data_callback = data_callback_in;
data_callback(output_buffer);
for(i=0 ; i<6 ; i++)
{
call_print(output_buffer[i]);
}
}
Кто-то, не могли бы вы определить, где я допустил ошибку?Как правильно передать массив 'dummy'?
Спасибо, раньше.