Partilhar via


/Zc:forScope (forçar conformidade para escopo de loop)

Usada para implementar o comportamento C++ padrão em loops for com extensões da Microsoft (/Ze).

Sintaxe

/Zc:forScope[-]

Comentários

O comportamento padrão é deixar um inicializador do loop for sair do escopo após o loop for. Em /Zc:forScope- and /Ze, o inicializador do loop for permanece no escopo até o escopo local terminar.

A /Zc:forScope fica ativa por padrão. A /Zc:forScope não é afetada quando a opção /permissive- é especificada.

A opção do compilador /Zc:forScope- foi preterida e será removida em uma versão futura. O uso de /Zc:forScope - gera o aviso de substituição D9035.

O código a seguir é compilado em /Ze, mas não em /Za:

// zc_forScope.cpp
// compile by using: cl /Zc:forScope- /Za zc_forScope.cpp
// C2065, D9035 expected
int main() {
    // Compile by using cl /Zc:forScope- zc_forScope.cpp
    // to compile this non-standard code as-is.
    // Uncomment the following line to resolve C2065 for /Za.
    // int i;
    for (int i = 0; i < 1; i++)
        ;
    i = 20;   // i has already gone out of scope under /Za
}

Se você usar a /Zc:forScope-, o aviso C4288 (desativado por padrão) será gerado 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 de exemplo para declarar int i.

Você pode modificar o comportamento em tempo de execução de /Zc:forScope usando o pragma conform.

Se você usar /Zc:forScope- em um projeto que tem um arquivo .pch existente, um aviso será gerado, /Zc:forScope- será ignorada e a compilação continuará usando os arquivos .pch existentes. Se você quiser gerar um novo arquivo .pch, use /Yc (Criar arquivo de cabeçalho pré-compilado).

Para obter mais informações sobre problemas de conformidade no Visual C++, confira Comportamento fora do 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, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades da Configuração>C/C++>Linguagem.

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

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

Confira também

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