我正在阅读以下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语句,循环,功能块等中封装代码。示例代码中使用的花括号的含义是什么?我尝试删除有问题的花括号,草图编译得很好。那么这些花括号的区别或目的是什么?
答案 0 :(得分:2)
在基于C的语言中使用curly括号服务器有几个目的(例如,保存if
块,就像你正在做的那样),但这里的第一个和最后一个只是定义一个本地范围。在这个确切的情况下,可以毫无问题地删除它们,因为没有别的东西可以分成不同的范围。 但是如果你有更多的代码,就像你可能做或将要的那样,在这个局部范围内定义的任何局部变量(例如options
)对于在本地范围之外定义的东西是不可见的。