Создание простого визуализатора VS2008 внутри autoexp.dat (проблема с приведением)

У меня большой проект смешанного C/C++. Я создал простой визуализатор для класса ICU UnicodeString следующим образом...

[inside autoexp.dat]
icu_4_2::UnicodeString {
        preview     ([$c.fUnion.fFields.fArray,su])
}

... и это прекрасно работает. Внутри отладчика везде, где я вижу объект, теперь я вижу текст в строке предварительного просмотра.

Затем я создал класс-оболочку, содержащий один из этих объектов, следующим образом...

class StringHandleData
{
public:
    icu_4_2::UnicodeString str;
};

... а затем создал еще один визуализатор для этого...

[inside autoexp.dat]
StringHandleData {
    preview     ([$c.str.fUnion.fFields.fArray,su])
}

... который снова работает нормально. Всякий раз, когда я вижу объект StringHandleData в отладчике, я вижу текст в строке.

Тем не менее, моя проблема возникает, когда я определяю typedef, который я могу использовать внутри кода C следующим образом...

typedef void* StringHandle;

... который под капотом на самом деле просто ptr объекта StringHandleData. Поэтому, когда я пытаюсь создать визуализатор для типа StringHandle, как это...

[inside autoexp.dat]
StringHandle {
    preview     ([((StringHandleData)$c).str.fUnion.fFields.fArray,su])
}

... это не работает. Я пробовал много других способов кастования объекта, но пока безуспешно. Если я зайду в окно просмотра и приведу StringHandle следующим образом... (StringHandleData *) stringHandle, то отладчик правильно выполнит приведение и предварительный просмотр - но я просто не могу заставить его делать это автоматически изнутри autoexp.dat

Спасибо за любую помощь.

1 ответ

Визуализатор Visual Studio слеп к typedefs и будет думать StringHandle это void *,

Другие вопросы по тегам