我正在阅读下面的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语句、循环、函数块等中。示例代码中使用的花括号是什么意思?我试着去掉有问题的花括号,草图可以很好地编译。那么这些大括号的区别或用途是什么呢?
发布于 2017-08-04 23:05:05
花括号在基于C的语言中服务于多种用途(例如,您正在做的那样保存if块),但是这里的第一个和最后一个仅仅是定义了一个局部作用域。在这种情况下,可以毫不费力地删除它们,因为没有其他东西可以划分到不同的作用域。然而,如果你后面有更多的代码,就像你可能会做的那样,在这个局部作用域内定义的任何局部变量(例如options)对于这个局部作用域之外定义的东西都是不可见的。
https://stackoverflow.com/questions/45509862
复制相似问题