Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A macro _ITERATOR_DEBUG_LEVEL controla se iteradores verificados e o suporte depuração de iteradores estão habilitados. Essa macro substitui e combina a funcionalidade das macros antigas _SECURE_SCL e _HAS_ITERATOR_DEBUGGING.
Valores da macro
A tabela a seguir resume os possíveis valores da macro _ITERATOR_DEBUG_LEVEL.
| Modo de compilação | Valor da macro | Descrição |
|---|---|---|
| Depurar | ||
| 0 | Desabilita os iteradores verificados e desabilita a depuração do iterador. | |
| 1 | Habilita os iteradores verificados e desabilita a depuração do iterador. | |
| 2 (padrão) | Habilita a depuração do iterador, iteradores verificados não são relevantes. | |
| Versão | ||
| 0 (Padrão) | Desabilita iteradores verificados. | |
| 1 | Habilita iteradores verificados, a depuração do iterador não é revelante. |
No modo de versão, o compilador gera um erro se você especificar _ITERATOR_DEBUG_LEVEL como 2.
Comentários
A macro _ITERATOR_DEBUG_LEVEL controla se os iteradores verificados estão habilitados e, no modo de Depuração, se o suporte para depuração de iteradores está habilitado. Se _ITERATOR_DEBUG_LEVEL estiver definido como 1 ou 2, os iteradores verificados garantem que os limites de seu contêiner não serão substituídos. Se _ITERATOR_DEBUG_LEVEL for 0, os iteradores não serão verificados. Quando _ITERATOR_DEBUG_LEVEL é definido como 1, o uso de qualquer iterador não seguro gera um erro de runtime e o programa é finalizado. Quando _ITERATOR_DEBUG_LEVEL é definido como 2, o iterador não seguro causa uma asserção e uma caixa de diálogo de erro de runtime que permite interromper o depurador.
Como a macro _ITERATOR_DEBUG_LEVEL dá suporte a funcionalidades semelhantes das macros _SECURE_SCL e _HAS_ITERATOR_DEBUGGING, talvez você não saiba qual macro e valor de macro usar em uma determinada situação. Para evitar confusão, recomendamos que você use apenas a macro _ITERATOR_DEBUG_LEVEL. Esta tabela descreve o valor da macro _ITERATOR_DEBUG_LEVEL equivalente a ser usado para diversos valores de _SECURE_SCL e _HAS_ITERATOR_DEBUGGING no código existente.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
|---|---|---|
| 0 (padrão da versão) | 0 (desabilitado) | 0 (desabilitado) |
| 1 | 1 (habilitado) | 0 (desabilitado) |
| 2 (padrão da depuração) | (não relevante) | 1 (habilitado no modo de depuração) |
Para obter informações sobre como desabilitar avisos sobre iteradores verificados, consulte _SCL_SECURE_NO_WARNINGS.
Exemplo
Para especificar um valor para a macro _ITERATOR_DEBUG_LEVEL, use uma opção do compilador /D para defini-lo na linha de comando ou use #define antes que os cabeçalhos da Biblioteca Padrão do C++ sejam incluídos nos arquivos de origem. Por exemplo, na linha de comando, para compilar sample.cpp no modo de depuração e usar o suporte para depuração de iteradores, você pode especificar a definição de macro _ITERATOR_DEBUG_LEVEL:
cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp
Em um arquivo de origem, especifique a macro antes de qualquer cabeçalho de biblioteca padrão que defina iteradores.
// sample.cpp
#define _ITERATOR_DEBUG_LEVEL 1
#include <vector>
// ...
Confira também
Iteradores verificados
Suporte ao iterador de depuração
Bibliotecas seguras: Biblioteca Padrão C++