Создание простого визуализатора 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 *
,