Что делает ключевое слово pragma keylist?

Читая о различных протоколах обмена сообщениями IoT, я натолкнулся на структуру, определенную ниже:

enum TempScale {
CELSIUM,
KELVIN,
FARENHEIT
};

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

Мой вопрос: что это #pragma keylist Ключевое слово сделать и где я могу найти документацию по использованию #pragma директивы препроцессора (я считаю, что это такая директива ..).

Благодарю.

2

Решение

#Pragma, которую вы просматриваете, — это метод PrismTech для определения значения ключа в структуре типа OMG-DDS (Служба распространения данных для систем реального времени). В этом случае это определение короткого «id» в качестве ключевого значения. Сопоставимое определение РТИ будет

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 игнорирует клавишу // @.

Это изменится с будущими версиями спецификации для расширяемых типов, в которой будет определен стандартный метод поддержки для всех поставщиков.

Обратите внимание, что если вы просматривали общий список протоколов обмена сообщениями IoT, концепция значения «ключ» может не существовать в других протоколах обмена сообщениями, которые вы просматривали.

3

Другие решения

Обратите внимание, что явная спецификация списка ключей с помощью прагмы позволяет определить порядок в ключах, который — в зависимости от варианта использования — может оказать заметное влияние на производительность при поддержании (заполнение / чтение / запрос / фильтрация) «многомерного хранилище для dataReader (и / или durability-service)

0

Обратите внимание, что для реализаций DDS, которые соответствуют недавно принятой спецификации OMG DDS-XTYPES (http://www.omg.org/spec/DDS-XTypes/) стандартный портативный способ указания ключей:

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

Или в качестве альтернативы (чтобы не сломать компиляторы IDL, которые не понимают аннотации IDL):

struct SensorType {
short id; //@key
float temp;
float hum;
TempScale scale;
}
0
По вопросам рекламы [email protected]