I have a rather large and complex set of programs for transferring from VC8 to VC9. One of the modules has a number of multi-level typedefs that force the compiler to generate a C4503 warning (the decorated name is truncated). The generated LIB file will not properly communicate with other project modules. VC8 was not worried about this, which led me to the conclusion that either the decoration process was changed to create even longer names, or the internal limit on the length of the decorated name was reduced. What is the best way to overcome this?
For obsolete code reasons, the MSDN proposal to replace typedefs with structures is not practical.
The typedifs in question are (sanitized code):
enum Type{
TYPE_COUNT,
TYPE_VALUE
};
typedef MyVector< Container*, CriticalSectionLock > Containers;
typedef MyVector< MyClassType*, CriticalSectionLock >::const_iterator const_iterator_type;
typedef MyVector< stl::pair< string, Type > >::const_iterator const_iterator_def;
typedef MyVector< Container** >::const_iterator const_iterator_container;
typedef MyVector< stl::pair < MyBase*, MyVector< stl::pair< Container**, Containers* > > > >::const_iterator const_iterator;