Arduino Curly Braces没有声明

时间:2017-08-04 14:52:24

标签: arduino arduino-ide

我正在阅读以下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语句,循环,功能块等中封装代码。示例代码中使用的花括号的含义是什么?我尝试删除有问题的花括号,草图编译得很好。那么这些花括号的区别或目的是什么?

1 个答案:

答案 0 :(得分:2)

在基于C的语言中使用curly括号服务器有几个目的(例如,保存if块,就像你正在做的那样),但这里的第一个和最后一个只是定义一个本地范围。在这个确切的情况下,可以毫无问题地删除它们,因为没有别的东西可以分成不同的范围。 但是如果你有更多的代码,就像你可能做或将要的那样,在这个局部范围内定义的任何局部变量(例如options)对于在本地范围之外定义的东西是不可见的。