1

这是一条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.

问题是什么?我该如何解决?
谢谢。

4

2 回答 2

5

这看起来可能是一个 cppcheck 错误。

但是......你写的是糟糕的 C++ 风格,更喜欢:

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

我还会注意到,将所有大写字母用于类型名称(这些通常保留给常量)并不是一个好的 C++ 风格,并且隐藏某些东西是指针的事实的 typedef 通常不是一个好主意。

于 2010-07-28T07:09:38.703 回答
1

在 C++ 中,您可以直接使用没有关键字 struct 的 Struct 名称,因此您不需要第一个 typedef,即 BUFFER_INFO。但是对于指针,您仍然可以拥有它。

于 2010-07-28T07:03:05.503 回答