我已经定义了一个函数指针数组,直接初始化它,并使用它,如下所示:
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复制内容时,错误也会弹出,所以我很茫然。
怎么了?
答案 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]();
}