предупреждение C4800: «int»: принудительное значение bool «true» или «false» (предупреждение о производительности) в MFC (VC ++) - PullRequest
0 голосов
/ 14 декабря 2010

Я получаю это предупреждение «предупреждение C4800:« int »: принудительное значение bool« true »или« false »(предупреждение о производительности)» в строке кода ниже:

if (g_objConfigurationDetails.bAutoScan !=  m_objScanNASBtn.GetCheck())
        {
            g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck();
}

обе строкидают то же самое предупреждение.где bAutoScan = bool m_objScanNASBtn = CButton

Ответы [ 3 ]

0 голосов
/ 14 декабря 2010

следующее:

g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck();

должно быть

g_objConfigurationDetails.bAutoScan = m_objScanNASBtn.GetCheck() == BST_CHECKED;

Проблема в том, что GetCheck() не возвращает bool, поэтому вы должны написать сравнение - по крайней мере, в виде != 0.

0 голосов
/ 14 декабря 2010

GetCheck возвращает целое число, и вы сравниваете его с логическим значением. Попробуйте сравнить GetCheck с BST_UNCHECKED или BST_CHECKED в зависимости от вашего логического значения, или просто приведите его к логическому значению, так как 2 значения численно соответствуют истине и ложи.

0 голосов
/ 14 декабря 2010

Причина в том, что MFC GetCheck не возвращает логическое значение:

Возвращаемое значение из кнопки управления, созданной с помощью BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIUT, или стиль BS_3STATE - одно из следующих значений:
- BST_UNCHECKED - состояние кнопки не проверено.
- BST_CHECKED - состояние кнопки проверено.
- BST_INDETERMINATE - состояние кнопки не определено (применяется только в том случае, если кнопка имеетстиль BS_3STATE или BS_AUTO3STATE).

Так что вы, вероятно, хотите

if (g_objConfigurationDetails.bAutoScan
      != (m_objScanNASBtn.GetCheck() == BST_CHECKED))

или

bool bNASBtnChecked = (m_objScanNASBtn.GetCheck() == BST_CHECKED);
if (g_objConfigurationDetails.bAutoScan != bNASBtnChecked)
{
    g_objConfigurationDetails.bAutoScan = bNASBtnChecked;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...