繁体   English   中英

pragma keylist关键字有什么作用?

[英]What does pragma keylist keyword do?

在阅读各种物联网消息传递协议时,我遇到了如下定义的结构:

enum TempScale {
   CELSIUM,
   KELVIN,
   FARENHEIT
};

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

我的问题是:这个#pragma keylist关键字做了什么,哪里可以找到关于使用#pragma预处理器指令的一些文档(我相信它是这样的指令..)。

谢谢。

您正在查看的#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编译器忽略了pragma,而PT编译器忽略了// @键。

这将随着可扩展类型规范的未来版本而改变,这将为所有供应商提供支持的标准方法。

请注意,如果您正在查看IoT消息传递协议的通用列表,那么您正在查看的其他消息传递协议中可能不存在“密钥”值的概念。

请注意,通过编译指示的显式键列表规范允许在键中定义一个排序 - 根据用例 - 可能对维护(填充/读取/查询/过滤)'多维 - 具有显着的性能影响存储'用于dataReader(和/或耐久性服务)

请注意,对于符合最近采用的OMG DDS-XTYPES规范( http://www.omg.org/spec/DDS-XTypes/ )的DDS实现,指定密钥的标准可移植方式是:

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

或者(为了避免破坏不了解IDL注释的IDL编译器):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM