Compartilhar via


/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

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, consulte Trabalhando com propriedades do projeto.

  2. Clique na pasta C/C++.

  3. Clique na página de propriedades de Idioma.

  4. Modifique a propriedade Forçar Conformidade no Escopo do Loop For.

Para definir essa opção do compilador via programação

Consulte também

Referência

/Zc (conformidade)

/Za, /Ze (desabilitar extensões de linguagem)