2010-07-28 7 views
1

Ceci est un message d'avertissement cppcheck.
peaux variables 'BUFFER_INFO' TypeDef avec le même nomUn avertissement avec cppcheck, "masque typedef avec le même nom"

Le BUFFER_INFO est défini comme suit.

typedef struct tagBufferInfo 
{ 
    CRITICAL_SECTION cs; 
    Buffer* pBuffer1; 
    Buffer* pBuffer2; 
    Buffer* pLoggingBuffer; 
    Buffer* pSendingBuffer; 
}BUFFER_INFO, *PBUFFER_INFO; 

Et je l'ai écrit,

PBUFFER_INFO p = new BUFFER_INFO; // causes the warning. 

Quel est le problème? Comment puis-je le résoudre?
Merci.

Répondre

4

Cela ressemble à un bogue cppcheck.

Mais ... ce que vous avez écrit est mauvais style C++, préfèrent:

struct BUFFER_INFO 
{ 
    CRITICAL_SECTION cs; 
    Buffer* pBuffer1; 
    Buffer* pBuffer2; 
    Buffer* pLoggingBuffer; 
    Buffer* pSendingBuffer; 
}; 

Je voudrais aussi obsrve que ce n'est pas bon style C++ pour utiliser toutes les majuscules pour les noms de type (ceux-ci sont normalement réservés constantes) et que typedefs qui cachent le fait que quelque chose soit un pointeur n'est normalement pas une bonne idée.

1

En C++, vous pouvez directement utiliser le nom Struct sans mot-clé struct et vous n'avez donc pas besoin du premier typedef qui est BUFFER_INFO. Mais pour le pointeur, vous pouvez toujours l'avoir.

Questions connexes