我的代码中有一个成员函数,如此
void foo(bool result)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
//doing something here
if(result)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
//do something here
}
}
这在VC编译器warning C4456: declaration of '_ctlState' hides previous local declaration
中发出警告。并且为了避免这种情况,我计划像这样使用lambda,而不是创建一个新函数。
void foo(bool result)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
//doing something here
if(result)
{
[](){AFX_MANAGE_STATE(AfxGetAppModuleState())};
//do something here
}
}
但它仍然抱怨警告,所以我认为lambda块外的声明默认是对内部透明的吗?