【问题标题】:How to assign a function ptr to an array of function ptrs (Arduino C++)如何将函数 ptr 分配给函数 ptrs 数组(Arduino C++)
【发布时间】:2017-01-27 21:10:28
【问题描述】:

我已经定义了一个指向函数的指针数组,直接初始化它,然后使用它,像这样:

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复制东西时也会弹出错误,所以我很茫然。

怎么了?

【问题讨论】:

  • MCVE,拜托。什么是 off_t?作业在哪里调用?等等……
  • 我尝试了您的代码,它似乎工作正常,前提是实际定义了 off_1 和 off_2 并且分配是在函数内部完成的。你能提供一个完整的例子吗?
  • @GercoDries 非常感谢您的提示-我确实将作业放在定义区域中-我真傻!你想把你的评论变成一个被接受的答案吗?谢谢,诺比

标签: c++ arrays function pointers arduino


【解决方案1】:

如果实际定义了 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]();
}

【讨论】:

    猜你喜欢
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多