将指针传递给函数回调
Passing pointer to a function callback
我想将数组传递给回调函数,但我总是得到 call_print()
的零(有时是垃圾字符)return。
我的代码在下面两个单独的文件中,我喜欢这样保存。
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' 数组?
先谢谢了。
尝试制作uint8_t **output_buffer;
作为单指针 uint8_t *output_buffer;
从从属方法调用回调时,您需要像下面这样调用。
data_callback(&output_buffer);
这是完整的代码。
#include<stdio.h>
#include<stdint.h>
uint8_t dummy[6] = {0x30, 0x30, 0x31, 0x31, 0x32, 0x32};
static void (*data_callback)(uint8_t **output_buffer);
uint8_t *output_buffer;
void dcallback(uint8_t **outputBuff);
int main(void)
{
slave(dcallback);
}
void dcallback(uint8_t **outputBuff)
{
*outputBuff = dummy;
}
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++)
{
printf("%d\n", *(output_buffer + i));
}
}
我想将数组传递给回调函数,但我总是得到 call_print()
的零(有时是垃圾字符)return。
我的代码在下面两个单独的文件中,我喜欢这样保存。
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' 数组?
先谢谢了。
尝试制作uint8_t **output_buffer;
作为单指针 uint8_t *output_buffer;
从从属方法调用回调时,您需要像下面这样调用。
data_callback(&output_buffer);
这是完整的代码。
#include<stdio.h>
#include<stdint.h>
uint8_t dummy[6] = {0x30, 0x30, 0x31, 0x31, 0x32, 0x32};
static void (*data_callback)(uint8_t **output_buffer);
uint8_t *output_buffer;
void dcallback(uint8_t **outputBuff);
int main(void)
{
slave(dcallback);
}
void dcallback(uint8_t **outputBuff)
{
*outputBuff = dummy;
}
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++)
{
printf("%d\n", *(output_buffer + i));
}
}