如何将函数ptr赋值给函数ptrs数组(Arduino C ++)

时间:2017-01-27 21:10:29

标签: c++ arrays function pointers arduino

我已经定义了一个函数指针数组,直接初始化它,并使用它,如下所示:

typedef void(*offFunction)(void);
offFunction offFunctionList[2] = {off_1, off_2};
:
offFunctionList[0]();

由于我需要动态更改功能,我尝试了

offFunctionList[0] = off_1;

但是这给了我编译器错误消息

'offFunctionList' does not name a type

我发现这个错误的唯一解释是围绕(词汇)可见性,但这不是问题,因为即使赋值是声明后的下一个语句,错误也会出现......

当我从this description of function pointers复制内容时,错误也会弹出,所以我很茫然。

怎么了?

1 个答案:

答案 0 :(得分:0)

您的代码可以正常工作,前提是实际定义了off_1和off_2,并且在函数内部完成了赋值,如下所示:

#include <stdio.h>

typedef void(*offFunction)(void);

void off_1() {
    printf("off_1\n");
}
void off_2() {
    printf("off_2\n");
}

int main() {
    offFunction offFunctionList[2] = {off_1, off_2};    
    offFunctionList[0]();
}