/Zc:forScope (Forzar ajuste en el ámbito del bucle For)
Actualización: noviembre 2007
Se utiliza para implementar comportamiento estándar de C++ para bucles de The for Statement con extensiones de Microsoft (/Za, /Ze (Deshabilitar extensiones de lenguaje)). /Zc:forScope está habilitado de manera predeterminada.
/Zc:forScope[-]
Comentarios
El comportamiento estándar consiste en permitir que el inicializador de un bucle for se salga del ámbito después del bucle for. Con /Za, /Ze (Deshabilitar extensiones de lenguaje), el inicializador del bucle for permanece dentro de ámbito hasta que finaliza el ámbito local.
El código siguiente se compila en /Ze pero no en /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
}
Si usa /Zc:forScope-, obtendrá una advertencia (deshabilitada de forma predeterminada) si una variable está dentro de ámbito a causa de una declaración realizada en un ámbito anterior. Para demostrarlo, quite los caracteres // del código anterior para declarar int i.
Puede modificar el comportamiento en tiempo de ejecución de /Zc:forScope con el pragma conform.
Si utiliza /Zc:forScope- en un proyecto con un archivo .pch ya existente, se hace caso omiso de /Zc:forScope- (con una advertencia) y la compilación continúa con los archivos .pch existentes. Si desea que se genere un archivo .pch nuevo, utilice /Yc (Crear archivo de encabezado precompilado).
Para obtener más información sobre aspectos de conformidad con Visual C++, vea Compatibility and Compliance Issues in Visual C++.
Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener información detallada, vea Modificar la configuración del proyecto.
Haga clic en la carpeta C/C++.
Haga clic en la página de propiedades Lenguaje.
Modifique la propiedad Forzar ajuste en el ámbito del bucle For.