C++ 如何从函数数组中调用特定函数?

C++ 如何从函数数组中调用特定函数?,c++,arduino,arduino-c++,C++,Arduino,Arduino C++,我正在研制一款基于Arduino/ATMega的手表。现在的主要目标是通过按下侧面的按钮在“模式”(不同功能)之间切换。最初,我有一个很长的if语句,如下所示: if (counter == 0) mode1(); enter code else if (counter == 1) mode2(); .... Repeat.... 但这似乎效率低下。因此,我尝试在不实际调用函数的情况下创建一个函数数组,然后稍后调用索引函数。代码段如下(对于混乱表示歉意,这

我正在研制一款基于Arduino/ATMega的手表。现在的主要目标是通过按下侧面的按钮在“模式”(不同功能)之间切换。最初,我有一个很长的if语句,如下所示:

if (counter == 0) 
    mode1();
    enter code 
else if (counter == 1)
    mode2();
    .... Repeat....

但这似乎效率低下。因此,我尝试在不实际调用函数的情况下创建一个函数数组,然后稍后调用索引函数。代码段如下(对于混乱表示歉意,这是一个WIP)


int模式[3]={showTime,flashlight,antiansia}//这些都是前面定义的void函数。
int scroller(){
int计数器=0;
int timeLeft=millis()+5000;

while(timer类型错误-您需要
void(*)(
作为类型,而不是
int
(因为您有一个
void someFunction()
函数指针数组,而不是整数数组-虽然前者可以以某种方式转换为后者,作为内存地址,但不能调用整数)

void(*模式[3])()={showTime,手电筒,抗焦虑};
使用类型定义,此代码更容易理解:

typedef void(*func_type)();
func_类型模式[3]={显示时间、手电筒、抗焦虑};

好的,我可以这样做。谢谢!调用这样一个函数,没有括号,是引用函数指针吗?“那样,没有括号”不是调用(调用=调用),我想你的意思是引用。从技术上讲,
myFunction
属于函数类型,但是:函数类型T的左值可以转换为“指向T的指针”类型的PR值。结果是指向函数的指针。-您也可以编写
&myFunction
,但由于隐式转换,结果是相同的。

int Modes[3] = {showTime,flashlight,antiAnxiety} //these are all void functions that are defined earlier. 

int scroller(){
  int counter = 0;
    int timeLeft = millis()+5000;
    while (timer <= millis()){
       ...more code...
    }
  Modes[counter]();
}