Es la primera vez que pruebo C++ STL. Estoy tratando de construir una matriz asociativa multidimensional utilizando el mapa. Por ejemplo:C4503 advertencias? ¿Cómo los soluciono/me deshago de ellos?
typedef struct DA {
string read_mode;
string data_type;
void *pValue;
void *pVarMemLoc;
}DA;
int main()
{
map<string, map<string, map<string, map<string, map<string, DA*>>>>> DATA;
DATA["lvl1"]["stg1"]["flr1"]["dep1"]["rom1"] = new DA;
DATA["lvl1"]["stg1"]["flr1"]["dep1"]["rom2"] = new DA;
DATA["lvl1"]["stg1"]["flr1"]["dep1"]["rom3"] = new DA;
IEC["lvl1"]["stg1"]["flr1"]["dep1"]["rom1"]->read_mode = "file";
IEC["lvl1"]["stg1"]["flr1"]["dep1"]["rom2"]->read_mode = "poll";
IEC["lvl1"]["stg1"]["flr1"]["dep1"]["rom3"]->read_mode = "report";
return 0;
}
Al compilar el código anterior en VS2005, tengo 170 de advertencias C4503. Todas las advertencias se refieren a "la longitud del nombre decorado excedida, el nombre fue truncado". Sin embargo, el programa parece funcionar bien.
¿Alguien quiere dedicar algo de tiempo para explicarme qué causó estas advertencias y cómo las soluciono? gracias de antemano :)
Warning 1 warning C4503: 'std::map<_Kty,_Ty>::~map' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
Warning 2 warning C4503: 'std::map<_Kty,_Ty>::map' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
Warning 3 warning C4503: 'std::map<_Kty,_Ty>::operator []' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
Warning 4 warning C4503: 'std::_Tree<_Traits>::~_Tree' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
Warning 5 warning C4503: 'std::map<_Kty,_Ty>::operator []' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
Warning 6 warning C4503: 'std::_Tree<_Traits>::iterator::~iterator' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
Warning 7 warning C4503: 'std::_Tree<_Traits>::iterator::iterator' : decorated name length exceeded, name was truncated c:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h 2121
¿Puedo sugerirle que use un 'boost :: shared_ptr' en lugar de un puntero sin formato para almacenar su' * DA'? De lo contrario, es probable que liberar toda la memoria asignada se convierta en una pesadilla. – ereOn
Hola, gracias por su sugerencia. Tendré que estudiar esto más. Mi programa es en realidad un exe llamado por un exe principal. En el programa, se asignará un grupo completo (probablemente miles) de * DA, luego, cuando el programa se ejecute, algunos se liberarán y asignarán dinámicamente dependiendo de los comandos de control del exe principal – justin
Tantos mapas. D: – GManNickG