【问题标题】:Arduino Curly Braces without statement没有声明的Arduino花括号
【发布时间】:2017-08-04 14:52:24
【问题描述】:

我正在阅读以下sample code,我注意到在loop() 中使用了没有任何声明的花括号:

// Start new MQTT connection
MqttClient::ConnectResult connectResult;
// Connect
{
  MQTTPacket_connectData options = MQTTPacket_connectData_initializer;
  options.MQTTVersion = 4;
  options.clientID.cstring = (char*)MQTT_ID;
  options.cleansession = true;
  options.keepAliveInterval = 15; // 15 seconds
  MqttClient::Error::type rc = mqtt->connect(options, connectResult);
  if (rc != MqttClient::Error::SUCCESS) {
    LOG_PRINTFLN("Connection error: %i", rc);
    return;
  }
}

// Connect 的正下方,有问题的花括号。我认为花括号用于将代码封装在 if 语句、循环、功能块等中。示例代码中使用的花括号是什么意思?我尝试删除有问题的花括号,草图可以编译得很好。那么这些花括号有什么区别或用途呢?

【问题讨论】:

  • 它将任何局部变量(在本例中为options)的范围限制为块。此处的options 成为与函数中的任何其他options 完全分开的变量。它还确保options 在块结束时被销毁,而不是可能一直徘徊到整个函数结束。

标签: arduino arduino-ide


【解决方案1】:

花括号在基于 C 的语言中具有多种用途(例如,保存if 块,正如您所做的那样),但这里的第一个和最后一个只是定义一个本地范围。在这种确切的情况下,可以毫无问题地删除它们,因为没有其他东西可以分成不同的范围。 但是如果你有更多的代码,就像你可能会做的那样,在这个本地范围内定义的任何局部变量(例如options)对于在这个本地范围之外定义的东西都是不可见的。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多