【发布时间】:2021-10-25 08:45:42
【问题描述】:
为什么在 LPNMITEMACTIVATE 的 SDK 的源代码中,它是用 left 的星号定义的?
typedef struct tagNMITEMACTIVATE
{
NMHDR hdr;
int iItem;
int iSubItem;
UINT uNewState;
UINT uOldState;
UINT uChanged;
POINT ptAction;
LPARAM lParam;
UINT uKeyFlags;
} NMITEMACTIVATE, *LPNMITEMACTIVATE;
我总是习惯指针在右边。无论哪种方式,代码如下:
const LPNMITEMACTIVATE pNMItem = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
仍会标记 const (C26462) 警告:
如果我将代码更改为:
const NMITEMACTIVATE* pNMItem = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
警告将消失。
【问题讨论】:
-
How to interpret complex C/C++ declarations。不完全准确,但一个好的开始。
标签: visual-c++ mfc code-analysis