Информация об изменениях

Сообщение Re[32]: The Big OOPs: Anatomy of a Thirty-five-year Mistake от 27.09.2025 7:32

Изменено 27.09.2025 7:34 Евгений Музыченко

Re[32]: The Big OOPs: Anatomy of a Thirty-five-year Mistake
Здравствуйте, Marty, Вы писали:

M>Уверен, что можно красиво и не слишком сложно переделать без макросов


Ну попробуйте, например, это:

#define PlaceKsId(Base,End) {Base##_##End, #End}

struct KsIdDesc {
unsigned int Id;
char const * IdName;
};

KsIdDesc const KsIdTable [] = {
PlaceKsId (KSPROPERTY_AUDIO, LATENCY),
PlaceKsId (KSPROPERTY_AUDIO, COPY_PROTECTION),
PlaceKsId (KSPROPERTY_AUDIO, CHANNEL_CONFIG),
...
};

Это таблица преобразования индекса в стандартный идентификатор (KSPROPERTY_AUDIO_LATENCY и т.п.). У меня подобных таблиц до черта.
Re[32]: The Big OOPs: Anatomy of a Thirty-five-year Mistake
Здравствуйте, Marty, Вы писали:

M>Уверен, что можно красиво и не слишком сложно переделать без макросов


Ну попробуйте, например, это:

#define PlaceKsId(Base,End) {Base##_##End, #End}

struct KsIdDesc {
  unsigned int Id;
  char const * IdName;
};

KsIdDesc const KsIdTable [] = {
  PlaceKsId (KSPROPERTY_AUDIO, LATENCY),
  PlaceKsId (KSPROPERTY_AUDIO, COPY_PROTECTION),
  PlaceKsId (KSPROPERTY_AUDIO, CHANNEL_CONFIG),
...
};

Это таблица преобразования индекса в стандартный идентификатор (KSPROPERTY_AUDIO_LATENCY и т.п.). У меня подобных таблиц до черта.