|
查看: 3124|回复: 3

回调函数参数编译报错

[复制链接]

10

主题

13

回帖

124

积分

不屈白银

积分
124
发表于 2024-9-13 21:37:32 | 显示全部楼层 |阅读模式 来自 天津
本帖最后由 长虹掩日 于 2024-9-13 21:46 编辑

我对c还不太熟练,有个语法问题
正常调用
int cb(void *arg)
{
        drv_gpio_write(TEST_GPIO_0, 1);
        return -1;
}
TL_ZB_TIMER_SCHEDULE(cb, NULL, 3 * 1000);
  

报错 passing argument 1 of 'ev_timer_taskPost' from incompatible pointer type
int cb(void *arg)
{
        drv_gpio_write(TEST_GPIO_0, (int)*arg);
        return -1;
}
TL_ZB_TIMER_SCHEDULE(cb, 0, 3 * 1000);

我想在函数TL_ZB_TIMER_SCHEDULE中带参数,但是编译过程中代码报错。

29

主题

364

回帖

1167

积分

版主

积分
1167
发表于 2024-9-18 16:30:26 | 显示全部楼层 来自 上海
你好,

“passing argument 1 of 'ev_timer_taskPost' from incompatible pointer type”提示参数类型不匹配。

你可以定义一个变量,然后将该变量的地址作为参数传入。

10

主题

13

回帖

124

积分

不屈白银

积分
124
 楼主| 发表于 2024-9-19 15:44:06 | 显示全部楼层 来自 北京
本帖最后由 长虹掩日 于 2024-9-19 15:51 编辑
TL_YB 发表于 2024-9-18 16:30
你好,

“passing argument 1 of 'ev_timer_taskPost' from incompatible pointer type”提示参数类型不匹 ...

int led_test(u8 *arg) // 使用例子中的void * 类型会报错
{
  drv_gpio_write(BREATH_LED, *arg);
  return 0;
}
  
u8 temp = 0;
TL_ZB_TIMER_SCHEDULE(led_test, &temp, 1000);


依然是同一个错误,只是变成了警告

29

主题

364

回帖

1167

积分

版主

积分
1167
发表于 2024-9-20 15:18:00 | 显示全部楼层 来自 上海
本帖最后由 TL_YB 于 2024-9-20 15:21 编辑
长虹掩日 发表于 2024-9-19 15:44
int led_test(u8 *arg) // 使用例子中的void * 类型会报错

u8 val = 0;

static s32 test(void *arg)
{
        u8 *ptr = (u8 *)arg;
        val = *ptr;

        return -1;
}

u8 init = 100;
TL_ZB_TIMER_SCHEDULE(test, (void *)&init, 1000);


本版积分规则

关注公众号
隐私政策|Telink forum

相关侵权、举报、投诉及建议等,请发 E-mail:forum@telink-semi.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|沪ICP备17008231号-1 |沪公网安备31011502403548号

在本版发帖返回顶部