如何解决如何从函数数组中调用特定函数?
我正在基于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};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。