Hm, много ответов и даже один выбран как «решение».
Но в любом случае проблема с Visual C ++ 10.0 (компилятор, поставляемый с Visual Studio 2010) заключается в том, что по умолчанию он он может быть настроен на предстандартное поведение, где область действия переменной, объявленной в < code> для цикла расширил блок, в который был помещен цикл.
Вы хотите эту опцию:
/Zc:forScope,wchar_t
который позволяет использовать стандартный код C ++ для
-scope, а также встроенный wchar_t
тип, и вы хотите:
/GR
который позволяет RTTI (т. е. dynamic_cast
и typeid
)).
Чтобы получить стандартную версию, вы также можете использовать этот вариант компоновщика:
/entry:mainCRTStartup
для включения стандартного C ++ main
для программ подсистемы GUI и, конечно же, вы хотите включить обработку исключений, но, как я помню, для проекта Visual C ++, который включен по умолчанию (хотя и не для компилятора командной строки) ,
Кроме того, конечно, вы хотите включить как можно больше предупреждений с помощью /W4
, хотя это не имеет ничего общего со стандартным соответствием.
Но, в любом случае, суммирование, причина, по которой вы получаете странные для
областей, скорее всего, связана с тем, что проект компилятора и/или Visual Studio defaulting был установлен на старые предстандартные правила , а опция для этого - /Zc: forScope
.