如何将函数 ptr 分配给函数 ptrs 数组(Arduino C++)

How to assign a function ptr to an array of function ptrs (Arduino C++)

本文关键字:函数 数组 Arduino ptrs C++ ptr 分配      更新时间:2023-10-16

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

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

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

offFunctionList[0] = off_1;

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

'offFunctionList' does not name a type

我为此错误找到的唯一解释集中在(词法)可见性上,但这不可能是问题,因为即使赋值是声明后的下一条语句,错误也会出现......

当我从函数指针的描述中复制内容时,也会弹出错误,所以我不知所措。

怎么了?

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

#include <stdio.h>
typedef void(*offFunction)(void);
void off_1() {
    printf("off_1n");
}
void off_2() {
    printf("off_2n");
}
int main() {
    offFunction offFunctionList[2] = {off_1, off_2};    
    offFunctionList[0]();
}