/Zc:forScope (forçar conformidade para escopo de loop)
Usado para implementar o comportamento C++ padrão para loops for com extensões Microsoft (/Ze). /Zc:forScope fica ativo por padrão.
/Zc:forScope[-]
Comentários
O comportamento padrão é deixar um inicializador do loop for sair do escopo após o loop for. Em /Za, /Ze (desabilitar extensões de linguagem), o inicializador do loop for permanece no escopo até o escopo local terminar.
O código a seguir compilará em /Ze, mas não em /Za:
// zc_forScope.cpp
// compile with: /Zc:forScope- /Za
// C2065 expected
int main() {
// Uncomment the following line to resolve.
// int i;
for (int i =0; i < 1; i++)
;
i = 20; // i has already gone out of scope under /Za
}
Se você usar o /Zc:forScope-, obterá um aviso (desligado por padrão) se uma variável estiver no escopo devido a uma declaração feita em um escopo anterior. Para demonstrar isso, remova os caracteres // no código acima para declarar int i.
É possível modificar o comportamento de tempo de execução do /Zc:forScope com o pragma conform.
Se você usar o /Zc:forScope- em um projeto com um arquivo .pch existente, o /Zc:forScope- será ignorado (com um aviso) e a compilação continuará com os arquivos .pch existentes. Se desejar gerar um novo arquivo .pch, use /Yc (criar arquivo de cabeçalho pré-compilado).
Para obter mais informações sobre problemas de conformidade com o Visual C++, consulte Comportamento não padrão.
Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, consulte Trabalhando com propriedades do projeto.
Clique na pasta C/C++.
Clique na página de propriedades de Idioma.
Modifique a propriedade Forçar Conformidade no Escopo do Loop For.
Para definir essa opção do compilador via programação
- Consulte ForceConformanceInForLoopScope.