/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
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.
Selecione a página de propriedades Propriedades da Configuração>C/C++>Linguagem.
Modifique a propriedade Forçar Conformidade no Escopo do Loop For.
Para definir essa opção do compilador via programação
- Consulte ForceConformanceInForLoopScope.
Confira também
/Zc (conformidade)
/Za, /Ze (desabilitar extensões de linguagem)