pragma keylist关键字有什么作用?

时间:2015-07-21 19:35:15

标签: c++ pragma iot data-distribution-service

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

http://localhost:8983/solr/collection1/mlt?q=title:"ABC"&fq=Source:("Test1")

http://localhost:8983/solr/collection1/mlt?q=title:"ABC"&fq=Source:("Test2")

我的问题是: #pragma keylist 关键字做了什么?我在哪里可以找到有关使用 #pragma 预处理程序指令的文档(我相信它是这样的指令。 )。

感谢。

3 个答案:

答案 0 :(得分: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编译器忽略了pragma,而PT编译器忽略了// @ key。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

请注意,对于符合最近采用的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;
}