2017-08-04 7 views
1

Ich lese die folgenden sample code und ich bemerkte die Verwendung von geschweiften Klammern ohne Anweisung innerhalb loop():Arduino Geschweifte Klammern ohne Angabe

// 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; 
    } 
} 

rechts unten // Connect dort die geschweifte Klammer in Frage. Ich nehme an, dass geschweifte Klammern verwendet werden, um Code innerhalb einer if-Anweisung, einer Schleife, eines Funktionsblocks usw. zu kapseln. Was bedeuten die geschweiften Klammern, die im Beispielcode verwendet werden? Ich habe versucht, die geschweiften geschweiften Klammern zu entfernen und die Skizze würde gut kompilieren. Was ist der Unterschied oder Zweck dieser geschweiften Klammern?

+1

Es begrenzt den Geltungsbereich von lokalen Variablen ('options' in diesem Fall) auf nur den Block. Die 'Optionen' werden hier zu einer völlig separaten Variable von allen anderen' Optionen' innerhalb der Funktion. Es stellt auch sicher, dass "Optionen" bis zum Ende der Blockierung zerstört werden, anstatt vielleicht bis zum Ende der gesamten Funktion zu verweilen. – jasonharper

Antwort

2

Curly Klammern Server mehr Zwecke in C-basierten Sprachen (zum Beispiel eines if Block zu halten, wie Sie tun), aber die erste und letzte, die hier einfach einen lokalen Bereich definieren. In genau diesem Fall können diese problemlos entfernt werden, da sich nichts anderes in verschiedene Bereiche aufteilen lässt. Jedoch Wenn Sie mehr Code hatten, der folgte, wie Sie wahrscheinlich tun oder werden, wären alle lokalen Variablen, die in diesem lokalen Bereich definiert sind (z. B. options), für außerhalb dieses lokalen Bereichs definierte Objekte unsichtbar.

Verwandte Themen