我正在查看一个大型遗留项目,其中for
语句中声明的变量在范围之外使用。 VS2013不喜欢这样,并给编译器错误。
我如何告诉VStudio允许这样做?
for (CBookmarks::iterator it = m_listBookmarks.begin();
!(it==m_listBookmarks.end()) && hSelected!=it->hParent;
it++);
CString Hierarchy = LookupHierarchy(it->hParent);
这是一个我没有维护的大型项目。我只是阅读源代码并尝试将其作为新项目的参考。我不想"修复"代码库。
修改
出于某种原因,尽管配置了
,我仍然会遇到编译错误
我尝试更改https://msdn.microsoft.com/en-us/library/84wcsx8x.aspx?f=255&MSPPError=-2147217396但我仍然遇到编译错误。
答案 0 :(得分:6)
使用:
/Zc:forScope-
记录在案: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);
重要您需要在激活设置后删除预编译的头文件缓存文件(* .pch),否则无效。