Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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++