Visual c++ 警告C4800:&x27;int';:强制值为bool';正确';或';假';MFC(VC+;+;)中的(性能警告)
我收到以下代码行中的警告“warning C4800:'int”:强制值bool'true'或'false'(性能警告):Visual c++ 警告C4800:&x27;int';:强制值为bool';正确';或';假';MFC(VC+;+;)中的(性能警告),visual-c++,mfc,Visual C++,Mfc,我收到以下代码行中的警告“warning C4800:'int”:强制值bool'true'或'false'(性能警告): if (g_objConfigurationDetails.bAutoScan != m_objScanNASBtn.GetCheck()) { g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck(); } 两条线都给出了相同的警告。 其中bAutoScan
if (g_objConfigurationDetails.bAutoScan != m_objScanNASBtn.GetCheck())
{
g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck();
}
两条线都给出了相同的警告。
其中bAutoScan=bool
m_objScanNASBtn=CButton原因是MFC不返回布尔值:
使用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_复选框、BS_RADIOBUTTON或BS_3STATE样式创建的按钮控件的返回值为以下值之一:-BST_未选中-按钮状态未选中。
-BST_已选中-按钮状态已选中。
-BST_不确定-按钮状态不确定(仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时适用) 所以你可能想要
if (g_objConfigurationDetails.bAutoScan
!= (m_objScanNASBtn.GetCheck() == BST_CHECKED))
或
以下是:
g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck();
应该是
g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck() == BST_CHECKED;
问题是
GetCheck()
不会返回bool
,因此您必须编写一个比较-至少以的形式0
GetCheck
返回一个整数,并将其与布尔值进行比较。根据您的布尔值,尝试将GetCheck
与BST\u UNCHECKED
或BST\u CHECKED
进行比较,或者将其强制转换为布尔值,因为这两个值在数字上匹配true和false
g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck() == BST_CHECKED;