3

さまざまな IoT メッセージング プロトコルについて読んでいるときに、以下のように定義された構造に出くわしました。

enum TempScale {
   CELSIUM,
   KELVIN,
   FARENHEIT
};

struct TempSensorType {
   short id;
   float temp;
   float hum;
   TempScale scale;
};
#pragma keylist TempSensorType id

私の質問は: この#pragma keylistキーワードは何をするのか、#pragmaプリプロセッサ ディレクティブの使用に関するドキュメントはどこにありますか (そのようなディレクティブだと思います..)。

ありがとう。

4

3 に答える 3

4

あなたが見ている #pragma は、OMG-DDS (リアルタイム システム用データ配布サービス) タイプ構造内でキー値を定義するための PrismTech メソッドです。この場合、短い「id」をキー値として定義しています。同等の RTI 定義は次のようになります。

struct TempSensorType {
    short id; //@key
    float temp;
    float hum;
    TempScale scale;
}

ベンダーの実装間の相互運用性のために、安全に行うことができます

struct TempSensorType {
    short id; //@key
    float temp;
    float hum;
    TempScale scale;
}
#pragma keylist TempSensorType id

RTI コンパイラはプラグマを無視し、PT コンパイラは //@key を無視するためです。

これは、拡張可能な型の仕様の将来のバージョンで変更され、すべてのベンダーがサポートする標準的な方法が定義されます。

IoT メッセージング プロトコルの一般的なリストを参照している場合、参照している他のメッセージング プロトコルには "キー" 値の概念が存在しない可能性があることに注意してください。

于 2015-07-21T21:09:35.913 に答える