Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>ЕМ>#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 и т.п.). У меня подобных таблиц до черта.
Бездарно и говнокодисто. Хотя бы потому, что все свои идентификаторы ты прописываешь вручную. Т.е. корректность твоей реализации полностью висит на человеческом факторе.
ЕМ>Ну попробуйте, например, это:
Удивишься, но пробовали и делали. Поищи, какое у меня количество тем, посвящённых компайл-тайм каунтерам.