该代码段有什么作用?

时间:2019-07-02 15:00:41

标签: c++ arduino memory-address restart

Google搜索,我发现了以下代码片段:

void(* restart) (void) = 0;

它确实重置了Arduino,我可以猜到它有点指向程序代码0x00(?)。我没有对Arduino进行编码的经验,也不知道我将使用什么关键字来研究它的实际功能和工作方式。这就是为什么我在这里。它实际上是否转到程序代码0,为什么在已经很奇怪的函数定义中出现“ *”?

谢谢:)

1 个答案:

答案 0 :(得分:1)

这是一个称为restart的函数指针的声明。该函数必须不带任何参数并返回void。函数指针已初始化为空指针。

在C ++中,调用函数(使用restart())将是不确定的行为,但Arduino上显示的方式重置设备并非不可能,这是因为空指针异常会导致设备重启,或者因为跳转到地址零开始执行复位代码。 (Arduino专家很快就会确认或拒绝)。