这是一条 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.
问题是什么?我该如何解决?
谢谢。
这看起来可能是一个 cppcheck bug。
但是...你写的C++风格很糟糕,更喜欢:
struct BUFFER_INFO
{
CRITICAL_SECTION cs;
Buffer* pBuffer1;
Buffer* pBuffer2;
Buffer* pLoggingBuffer;
Buffer* pSendingBuffer;
};
我还观察到,使用全部大写的类型名称(这些通常为常量保留)并不是好的 C++ 风格,并且隐藏某物是指针这一事实的 typedef 通常不是一个好主意。
在 C++ 中,您可以直接使用结构名称,无需关键字 struct,因此您不需要第一个 typedef,即 BUFFER_INFO。 但对于指针你仍然可以拥有它。