2016-09-29 1 views
0

J'ai un fichier .h définissant une classe. Cette classe a un membre qui est une carte nichée dans une carte nichée dans une carte, etc.Où mettre l'avertissement #pragma (désactiver: 4503) pour que cela fonctionne?

std::map<ItemWieldMode, 
    std::map<AgentType::HandState, 
     std::map<AgentType::MovementState, 
       std::map<AgentType::BodyState, 
        std::map<Vec2<int>, sp<AnimationEntry>>>>>> standart_animations; 

Ceci est le fichier en question https://github.com/Istrebitel/OpenApoc/blob/master/game/state/battle/battleunitanimationpack.h

Naturellement, un pops d'avertissement C4503, nom trop long et a été tronquée .

J'essaie de le supprimer. Peu importe où je mets "#pragma warning (disable: 4503)" ça ne marche pas. J'ai essayé au début du fichier .h, au début du fichier .cpp en utilisant cette classe - rien ne fonctionne. Le compilateur donne encore un avertissement. J'utilise la communauté VS 2015.

+0

http://connect.microsoft.com/VisualStudio/feedbackdetail/view/898267/not-able-to-suppress-warning-4503 -decorated-nom-longueur-dépassé-nom-était-tronqué –

+0

@HansPassant oh lol, donc ils ne vont même pas la peine de le réparer? M $ typique ... – Istrebitel

Répondre

0

Si vous mettez #pragma warning(disable : 4503)après le push vous obtenez l'avertissement. Si vous le mettez avant, il y a aucun avertissement. Cela signifie que le code ci-dessus génère C4503 warnings, même si c'était disabled.

Par exemple,

#pragma warning (disable:4503) 
#pragma warning (push, 1) 

. 
. 
. 
. 

#pragma warning (pop) 

lien de référence: https://msdn.microsoft.com/en-us/library/2c8f766e(v=vs.100).aspx

+0

J'ai essayé de mettre ceci au début et à la fin du fichier .h et les avertissements arrivent encore – Istrebitel