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

问题描述

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

                ModelAndView mav = new ModelAndView();
                mav.setViewName("exception");  
                //expected:web_file2 
                //actual:exception
                return mav;
        

但这似乎效率很低。因此,我尝试不实际调用函数就对它们进行数组处理,然后再调用索引函数。代码段如下(很抱歉,这是一个WIP)

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

但是,当我尝试编译它时,出现错误:

错误:表达式不能用作函数。

该逻辑在Python中有效,因此我假设有一个我不知道的概念可以在高级语言中抽象出来。我很愿意学习它,我只需要知道它是什么。

解决方法

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

void (*Modes[3])() = {showTime,flashlight,antiAnxiety};

使用类型定义,此代码变得更容易理解:

typedef void (*func_type)();
func_type Modes[3] = {showTime,antiAnxiety};

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...