C++ 带有“cppcheck”的警告;隐藏同名的typedef;

C++ 带有“cppcheck”的警告;隐藏同名的typedef;,c++,static-analysis,cppcheck,C++,Static Analysis,Cppcheck,这是一条警告消息。 变量“BUFFER\u INFO”隐藏同名的typedef 缓冲区信息定义如下 typedef struct tagBufferInfo { CRITICAL_SECTION cs; Buffer* pBuffer1; Buffer* pBuffer2; Buffer* pLoggingBuffer; Buffer* pSendingBuffer; }BUFFER_INFO, *PBUFFER_INFO; 我写道 PBUFFER_IN

这是一条警告消息。
变量“BUFFER\u INFO”隐藏同名的typedef

缓冲区信息定义如下

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.
有什么问题?如何解决它?

谢谢。

C++中,你可以直接使用没有关键字结构的结构名,所以你不需要第一个BuffiSyFi的Type。
但是对于指针,你仍然可以拥有它。

在C++中,你可以直接使用没有关键字结构的结构名,所以你不需要第一个BuffiSyf信息。
但对于指针,您仍然可以使用它。

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

然而。。。你写的是坏C++风格,喜欢:

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

我也会发现,使用所有类型的大写字母(通常是为常量保留)不是好的C++风格,而隐藏一些事实是指针的类型通常不是好主意。

< P>这看起来可能是CPPCHECK错误。< /P> 然而。。。你写的是坏C++风格,喜欢:

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

我也会发现,使用类型名称的所有大写(通常是为常量保留)不是好的C++风格,而隐藏一些事实是指针的类型通常不是好主意。