2017-08-04 23 views
1

せずに私は次のsample codeを読んでいたと私はloop()内の任意のステートメントのない中括弧の使用に気づいた:問題の中括弧があるArduinoの中括弧の文

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

ローカル変数のスコープ(この場合は 'options')をブロックだけに制限します。 'options'は関数内の他の' options'とは全く別の変数になります。また、 'options'がブロックの終わりまでに破壊されることを確実にします。 – jasonharper

答えて

2

中括弧は、Cベースの言語でいくつかの目的を果たします(例えば、ifブロックを保持するなど)。最初と最後の部分は単にローカルスコープを定義します。この厳密なケースでは、別のスコープに分離するためのものがないため、これらは問題なく削除できます。 しかしこのコードでは、おそらくそうであるように、このローカルスコープ内に定義されたローカル変数(たとえばoptions)は、このローカルスコープの外で定義されたものには見えません。