Compartir a través de


_ITERATOR_DEBUG_LEVEL

La macro _ITERATOR_DEBUG_LEVEL controla si están habilitados los iteradores comprobados y la compatibilidad de los iteradores de depuración. Esta macro reemplaza y combina la funcionalidad de las macros antiguas _SECURE_SCL y _HAS_ITERATOR_DEBUGGING .

Valores de la macro

En la siguiente tabla se resumen los posibles valores de la macro _ITERATOR_DEBUG_LEVEL.

Modo de compilación Valor de la macro Descripción
Depurar
0 Deshabilita los iteradores comprobados y deshabilita la depuración de iteradores.
1 Habilita los iteradores comprobados y deshabilita la depuración de iteradores.
2 (predeterminado) Habilita la depuración de iteradores. Los iteradores comprobados no son pertinentes.
Versión
0 (Predeterminado) Deshabilita los iteradores comprobados.
1 Habilita los iteradores comprobados. La depuración de iteradores no es pertinente.

En modo de versión, el compilador genera un error si especifica _ITERATOR_DEBUG_LEVEL como 2.

Comentarios

La macro _ITERATOR_DEBUG_LEVEL controla si los iteradores comprobados están habilitados y, en modo de depuración, si la compatibilidad de los iteradores de depuración está habilitada. Si _ITERATOR_DEBUG_LEVEL está definido como 1 o 2, los iteradores comprobados garantizan que los límites de los contenedores no se han sobrescrito. Si _ITERATOR_DEBUG_LEVEL es 0, no se comprueban los iteradores. Cuando _ITERATOR_DEBUG_LEVEL está definido como 1, el uso no seguro de iteradores produce un error en tiempo de ejecución y el programa finaliza. Cuando _ITERATOR_DEBUG_LEVEL está definido como 2, el uso no seguro de iteradores produce una aserción y aparece un cuadro de diálogo de error en tiempo de ejecución que le permite interrumpir el depurador.

Dado que la macro _ITERATOR_DEBUG_LEVEL admite una funcionalidad similar a las macros _SECURE_SCL y _HAS_ITERATOR_DEBUGGING, es posible que no sepa qué macro y qué valor de macro usar en una situación determinada. Para evitar confusiones, se recomienda que use solo la macro _ITERATOR_DEBUG_LEVEL. En esta tabla se describe el valor de macro _ITERATOR_DEBUG_LEVEL equivalente que se usará para distintos valores de _SECURE_SCL y _HAS_ITERATOR_DEBUGGING en el código existente.

_ITERATOR_DEBUG_LEVEL _SECURE_SCL _HAS_ITERATOR_DEBUGGING
0 (valor predeterminado de versión) 0 (Deshabilitado) 0 (Deshabilitado)
1 1 (habilitado) 0 (Deshabilitado)
2 (valor predeterminado de depuración) (no pertinente) 1 (habilitado en modo de depuración)

Para obtener más información sobre cómo deshabilitar las advertencias sobre los iteradores comprobados, consulte _SCL_SECURE_NO_WARNINGS.

Ejemplo

Para especificar un valor para la macro _ITERATOR_DEBUG_LEVEL, use una opción del compilador /D para definirlo en la línea de comandos, o bien use #define antes de los encabezados de la Biblioteca Estándar de C++ incluidos en los archivos de código fuente. Por ejemplo, en la línea de comandos, para compilar sample.cpp en modo de depuración y usar la compatibilidad de los iteradores de depuración, puede especificar la definición de macro _ITERATOR_DEBUG_LEVEL:

cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp

En un archivo de código fuente, especifique la macro antes de los encabezados de la biblioteca estándar que definen los iteradores.

// sample.cpp

#define _ITERATOR_DEBUG_LEVEL 1

#include <vector>

// ...

Consulte también

Checked Iterators
Compatibilidad de los iteradores de depuración
Bibliotecas seguras: Biblioteca estándar de C++