title: Visual Studio natvis and incomplete types
body: <p>I'm writing a natvis file for a project where some structs are defined "privately", that is to say in .c code files rather than headers.</p>
  
  <p>When I'm debugging the module within which the structs are defined the debugger picks them up, but when dealing with pointers to those structs in other modules I lose all internal details and see <code>{...}</code> instead. I can get around this by specifically casting the object to the module-qualified name of the struct, e.g. <code>(MyModule.dll!MyStruct*)MyPointer</code>, and that's OK for general development work. But it has become painful when writing natvis files.</p>
  
  <p>I can create an <code>ExpandedItem</code> element to display the correctly-cast object. But what I really want to do is have multiple <code>Item</code> elements which pick out key variables, and if I do that then I'm stuck with "Raw View" giving me just <code>{...}</code>. Attempts to do both things at once lead to recursions. It's also really ugly having to cast <code>this</code> a lot in the natvis file.</p>
  
  <p>Can I prompt the debugger to recognise the complete type definition by itself?</p>