Предупреждение cppcheck, «скрывает typedef с тем же именем» - PullRequest
1 голос
/ 28 июля 2010

Это предупреждение cppcheck .
Переменная «BUFFER_INFO» скрывает typedef с тем же именем

BUFFER_INFO определяется следующим образом.

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

И я написал,

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

В чем проблема?Как мне это решить?
Спасибо.

Ответы [ 2 ]

4 голосов
/ 28 июля 2010

Похоже, что это может быть ошибка cppcheck.

Однако ... то, что вы написали - плохой стиль C ++, предпочтите:

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

Я бы также заметил, что этоне очень хороший стиль C ++, чтобы использовать все прописные буквы для имен типов (обычно они зарезервированы для констант), и что typedef, скрывающие тот факт, что что-то является указателем, обычно не очень хорошая идея.

1 голос
/ 28 июля 2010

В C ++ вы можете напрямую использовать имя Struct без ключевой структуры struct, поэтому вам не нужен первый typedef, который называется BUFFER_INFO. Но для указателя у вас все еще может быть это.

...