2014-09-15 2 views
-2
typedef struct _STRING { 
    USHORT Length; 
    USHORT MaximumLength; 
    #ifdef MIDL_PASS 
     [size_is(MaximumLength), length_is(Length)] 
    #endif 
    PCHAR Buffer; 
} STRING, *PSTRING; 
Error 2 error C2371: PSTRING: redefinition; different basic types 
Error 2 error C2371: STRING: redefinition; different basic types 
+2

Alors, quelle est votre question exactement? Le message d'erreur est relativement clair. – Mat

+1

On dirait que vous essayez de redéfinir un [type existant] (http://msdn.microsoft.com/en-us/library/ms648424%28v=vs.85%29.aspx). – Praetorian

Répondre

0

Quelque part dans votre code (probablement dans un en-tête inclus) USHORT, PCHAR, STRING et PSTRING ont été définis comme des noms de type.

Ainsi le compilateur signale une erreur lorsqu'il voit STRING et PSTRING étant défini une deuxième fois.

La raison pour laquelle le compilateur dit "différents types de base" est que définir un nom de type une seconde fois n'est PAS une erreur si vous définissez exactement la même chose que la première définition. Pour supprimer ces erreurs, vous pouvez soit 1) utiliser des noms de types différents afin qu'il n'y ait pas de conflit ou 2) supprimer l'en-tête qui a déjà défini ces noms en dehors de votre code.