Google搜索,我发现了以下代码片段:
void(* restart) (void) = 0;
它确实重置了Arduino,我可以猜到它有点指向程序代码0x00(?)。我没有对Arduino进行编码的经验,也不知道我将使用什么关键字来研究它的实际功能和工作方式。这就是为什么我在这里。它实际上是否转到程序代码0,为什么在已经很奇怪的函数定义中出现“ *”?
谢谢:)
答案 0 :(得分:1)
这是一个称为restart
的函数指针的声明。该函数必须不带任何参数并返回void。函数指针已初始化为空指针。
在C ++中,调用函数(使用restart()
)将是不确定的行为,但Arduino上显示的方式重置设备并非不可能,这是因为空指针异常会导致设备重启,或者因为跳转到地址零开始执行复位代码。 (Arduino专家很快就会确认或拒绝)。