如果在没有()的Arduino中用函数作为条件的语句工作正常

If statement with function as a condition in Arduino without () works fine

本文关键字:条件 语句 工作 函数 如果 Arduino      更新时间:2023-10-16

我在Arduino:中的if语句中使用了返回bool的函数作为条件

bool conditionFunc(){
 return true;
}
void setup(){}
void loop(){
  if (conditionFunc){
  }
}

在我看来,我应该做:

if (conditionFunc()){ //added ()
  doSometing;
}

但第一个在验证过程中没有引起任何错误,代码也能工作(据我的客户说,我没有构建电路,这是一项简单的工作,所以我不必这么做)。我偶然发现了它。我没有任何名为conditionFunc的变量。在我看来,在Arduino IDE中验证时应该发现错误。

我很困惑。当我学习c++时,我是否错过了一些东西,并且这两种解决方案都可以?也许这是由Arduino解释c++的方式引起的?正如我所说,我没有看到它在起作用,但我不知道为什么我的客户会谎报他想正常工作的事情。至少它应该会在编译过程中引起问题(在Arduino IDE中进行验证)

第一个将函数转换为函数指针,并测试该指针是否为非null。它总是这样,因为每个函数都有一个非空地址,所以它总是doSomething

因此,代码将进行编译,如果条件通常为true,则可能看起来"有效";但是当条件为假时它可能出错,但是程序无论如何都继续到CCD_ 2。