[英]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.