允许变量在本地范围内使用

jga*_*fin 3 c++ legacy-code visual-studio-2013

我正在研究一个大型遗留项目,其中在for语句中声明的变量在范围之外使用.VS2013不喜欢这样,并给出编译器错误.

我如何告诉VStudio允许这样做?

for (CBookmarks::iterator it = m_listBookmarks.begin();
    !(it==m_listBookmarks.end()) && hSelected!=it->hParent;
    it++);

CString Hierarchy = LookupHierarchy(it->hParent);
Run Code Online (Sandbox Code Playgroud)

这是一个我没有维护的大型项目.我只是阅读源代码并尝试将其作为新项目的参考.我不想"修复"代码库.

编辑

出于某种原因,我仍然遇到编译错误,尽管配置:

在此输入图像描述

我尝试更改https://msdn.microsoft.com/en-us/library/84wcsx8x.aspx?f=255&MSPPError=-2147217396但我仍然遇到编译错误.

ten*_*our 6

使用:

/Zc:forScope-
Run Code Online (Sandbox Code Playgroud)

记录如下:https://msdn.microsoft.com/en-us/library/84wcsx8x.aspx

但我真的很讨厌使用这种开关的想法.我建议只使用以下更改,这将产生相同的效果:

CBookmarks::iterator it = m_listBookmarks.begin();
for (;
    !(it==m_listBookmarks.end()) && hSelected!=it->hParent;
    it++);

CString Hierarchy = LookupHierarchy(it->hParent);
Run Code Online (Sandbox Code Playgroud)

重要说明激活设置后,您需要删除预编译的头文件缓存文件(*.pch),否则无效.