cppcheck 的警告,“隐藏具有相同名称的 typedef”

Ben*_*min 1 c++ static-analysis cppcheck

这是一条cppcheck警告消息。
变量 'BUFFER_INFO' 隐藏同名的 typedef

BUFFER_INFO 定义如下。

typedef struct tagBufferInfo
{
    CRITICAL_SECTION cs;
    Buffer* pBuffer1;
    Buffer* pBuffer2;
    Buffer* pLoggingBuffer;
    Buffer* pSendingBuffer;
}BUFFER_INFO, *PBUFFER_INFO;
Run Code Online (Sandbox Code Playgroud)

我写道,

PBUFFER_INFO p = new BUFFER_INFO; // causes the warning.
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

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

struct BUFFER_INFO
{
    CRITICAL_SECTION cs;
    Buffer* pBuffer1;
    Buffer* pBuffer2;
    Buffer* pLoggingBuffer;
    Buffer* pSendingBuffer;
};
Run Code Online (Sandbox Code Playgroud)

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