2016-04-29 2 views
0

Quelqu'un peut-il m'expliquer? PC-Lint erreur no. 38 avec un exemple ...Décalage du symbole 'Symbole' incohérent

38 Offset of symbol 'Symbol' inconsistent (Location) -- A 
     member of a class or struct appears in a different 
     position (offset from the start of the structure) than an 
     earlier declaration. This could be caused by array 
     dimensions changing from one module to another. 

Je continue de recevoir des erreurs comme ...

Offset of symbol 'ClassX::access1' inconsistent (conflicts with line 92, file U:\ABC\ABCApp.h, module U:\ABC\ABCApp.cpp) 

access1 est une variable membre de type ENUM ACCESS déclaré dans ClassX. Et cette énumération ACCESS est définie dans un fichier d'en-tête différent access.h. access.h est inclus dans stdafx.h.

typedef enum 
{ 
    ACCESS_NONE  = 0, 
    ACCESS_READ  = 1 
} ACCESS; 

Vous ne savez pas quel est le problème ici. Où est l'incohérence?

Répondre

0

Ce n'est pas la définition de ACCESS qui est le problème, mais la position de access1 membre de la classe ClassX. Vous avez soit une double déclaration de la classe, soit (probablement) une erreur #pragma pack qui est en vigueur lors de la compilation d'un .cpp, mais qui n'est pas en vigueur lors de la compilation d'un autre.