Condividi tramite


_ITERATOR_DEBUG_LEVEL

La macro _ITERATOR_DEBUG_LEVEL controlla se gli iteratori verificati e il supporto del debug degli iteratori sono abilitati. Questa macro sostituisce e combina la funzionalità delle macro _SECURE_SCL e _HAS_ITERATOR_DEBUGGING precedenti.

Valori della macro

La tabella seguente contiene un riepilogo dei possibili valori della macro _ITERATOR_DEBUG_LEVEL.

Modalità di compilazione Valore della macro Descrizione
Debug
0 Disabilita gli iteratori verificati e il debug degli iteratori.
1 Abilita gli iteratori verificati e il debug degli iteratori.
2 (predefinito) Abilita il debug degli iteratori. Gli iteratori verificati non sono pertinenti.
Versione
0 (Predefinito) Disabilita gli iteratori verificati.
1 Abilita gli iteratori verificati. Il debug degli iteratori non è pertinente.

In modalità di rilascio il compilatore genera un errore se si specifica _ITERATOR_DEBUG_LEVEL come 2.

Osservazioni:

La macro _ITERATOR_DEBUG_LEVEL controlla se gli iteratori verificati sono abilitati e, in modalità di debug, se il supporto del debug degli iteratori è abilitato. Se _ITERATOR_DEBUG_LEVEL è definito come 1 o 2, gli iteratori verificati assicurano che i limiti dei contenitori non vengano sovrascritti. Se _ITERATOR_DEBUG_LEVEL è 0, gli iteratori non vengono verificati. Quando _ITERATOR_DEBUG_LEVEL è definito come 1, l'uso di un iteratore non sicuro causa un errore di runtime e il programma viene terminato. Quando _ITERATOR_DEBUG_LEVEL è definito come 2, l'uso di un iteratore non sicuro determina la visualizzazione di un'asserzione e di una finestra di dialogo di errore di runtime che consente di accedere al debugger.

Poiché la macro _ITERATOR_DEBUG_LEVEL supporta una funzionalità simile a quella delle macro _SECURE_SCL e _HAS_ITERATOR_DEBUGGING, può non essere facile identificare con certezza la macro e il relativo valore da usare in una determinata situazione. Per evitare confusione, è consigliabile usare solo la macro _ITERATOR_DEBUG_LEVEL. Questa tabella descrive il valore equivalente della macro _ITERATOR_DEBUG_LEVEL da usare per diversi valori di _SECURE_SCL e _HAS_ITERATOR_DEBUGGING nel codice esistente.

_ITERATOR_DEBUG_LEVEL _SECURE_SCL _HAS_ITERATOR_DEBUGGING
0 (impostazione predefinita in modalità di rilascio) 0 (disabilitata) 0 (disabilitata)
1 1 (abilitata) 0 (disabilitata)
2 (impostazione predefinita in modalità di debug) (non pertinente) 1 (abilitata in modalità di debug)

Per informazioni su come disabilitare gli avvisi relativi agli iteratori controllati, vedere _SCL_SECURE_NO_WARNINGS.

Esempio

Per specificare un valore per la macro, usare un'opzione /D del _ITERATOR_DEBUG_LEVEL compilatore per definirla nella riga di comando o usare #define prima che le intestazioni della libreria standard C++ siano incluse nei file di origine. Ad esempio, nella riga di comando, per compilare sample.cpp in modalità di debug e usare il supporto del debug degli iteratori, è possibile specificare la definizione di macro _ITERATOR_DEBUG_LEVEL:

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

In un file di origine specificare la macro prima delle intestazioni della libreria standard che definiscono gli iteratori.

// sample.cpp

#define _ITERATOR_DEBUG_LEVEL 1

#include <vector>

// ...

Vedi anche

Checked Iterators
Supporto degli iteratori di debug
Librerie protette: libreria standard C++