Возьмите этот пример кода:
void CChristianLifeMinistryDiscussionsDlg::SetControlStates()
{
if (m_pEntry == nullptr)
return;
bool bClass1 = false, bClass2 = false;
m_pEntry->GetAuxiliaryClasses(bClass1, bClass2);
m_cbBrothersC1.EnableWindow(bClass1 ? TRUE : FALSE);
m_cbBrothersC2.EnableWindow(bClass2 ? TRUE : FALSE);
}
EnableWindow
ожидает параметр типа BOOL
. Мне никогда не ясно, допустимо ли просто передать значение моей переменной bool
в этой ситуации.
BOOL — это псевдоним типа для int
. Значение типа bool
может быть неявно преобразовано в значение типа int
. Это называется интегральным продвижением и хорошо определено: значение false
становится равным 0, а значение true
становится равным 1.
Передача значения типа bool
в функцию, которая ожидает аргумент типа BOOL
(т. е. int
), безопасна и хорошо определена.