我只是花了太长时间试图诊断为什么,在下面的代码片段中,该ProcessEvent()
方法似乎忽略了false
我传入的值aInvokeEventHandler
:
HRESULT
CEventManager::
Process(Event anEvent)
{
return (m_pPool->GetFsm()->ProcessEvent(anEvent), false);
}
// Definition of ProcessEvent()
HRESULT ProcessEvent(const Event& anEvent, bool aInvokeEventHandler = true);
每当我闯入ProcessEvent()
方法时,无论我是否通过,aInvokeEventHandler
总是会。true
false
一位同事向我指出,该false
值应该在该行的内括号内return
,如下所示:
return m_pPool->GetFsm()->ProcessEvent(anEvent, false); // Corrected code
我一看到这个,就踢了自己一脚。发现这一点显然变得更加困难,因为原始编码器在行上使用了多余的外括号return
。
我的问题是,为什么编译器没有为我选择这个?
我的方法返回 a HRESULT
,但在上面的原始代码中,我显然在括号中返回了一组复合值,即:
(HRESULT, bool)
这样的符号在 C/C++ 标准中是否可以接受,如果可以,允许这样做的目的是什么?或者这是编译器中的错误?