【发布时间】: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