//windows头文件:
#先定义tcn_(0u-550u)
#定义tcn_selchange(tcn_first-1)
//用户文件:
…
无符号int i=tcn_selchange;
以上代码在C++中是有效的,编译时不需要任何警告。没有溢出,这只意味着-550u
如果他们将其写为define tcn ou first 0xfffffffdda
或0xfffffffffu-549u
,则会更清楚。
代码分析似乎使用了一种不同的方法,并看到溢出。
可能的解决方案:
禁用代码中的警告:
pragma warning(push)
#pragma警告(禁用:26454)
开始_消息_映射(cmydialog,cdialogex)
通知时(tcn_selchange,idc_tab1,ontcnselchangetabHistoryType)
结束消息映射()
#pragma警告(pop)
或者,禁用代码分析规则中的警告
use the code analysis rule set editor
上面的代码在C++中是有效的,它应该编译而不需要任何警告。没有溢出,这是注定的-550U
如果他们把它写成#define TCN_FIRST 0xFFFFFDDA
或0xFFFFFFFFU-549U
代码分析似乎使用了不同的方法并看到溢出。
可能的解决方案:
禁用代码中的警告:
#pragma warning( push )
#pragma warning( disable : 26454 )
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnTcnSelchangeTabHistoryType)
END_MESSAGE_MAP()
#pragma warning( pop )
或者,禁用代码分析规则中的警告
Use the code analysis rule set editor