这是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.
有什么问题?我该如何解决? 感谢。
答案 0 :(得分:4)
这看起来可能是一个cppcheck错误。
然而......你所写的是糟糕的C ++风格,更喜欢:
struct BUFFER_INFO
{
CRITICAL_SECTION cs;
Buffer* pBuffer1;
Buffer* pBuffer2;
Buffer* pLoggingBuffer;
Buffer* pSendingBuffer;
};
我还会觉得,对于类型名称使用全部大写(这些通常是为常量保留)并不是很好的C ++样式,并且那些隐藏某些东西是指针这一事实的typedef通常不是一个好主意。
答案 1 :(得分:1)
在C ++中,您可以直接使用不带关键字struct的Struct名称,因此您不需要第一个类型为BUFFER_INFO的typedef。 但对于指针,你仍然可以拥有它。