_ITERATOR_DEBUG_LEVEL
Das _ITERATOR_DEBUG_LEVEL
-Makro steuert, ob überprüfte Iteratoren und Unterstützung für Iteratordebugging aktiviert sind. Dieses Makro hat Vorrang und kombiniert die Funktionalität der älteren _SECURE_SCL
- und _HAS_ITERATOR_DEBUGGING
-Makros.
Makrowerte
In der folgenden Tabelle werden die möglichen Werte für das _ITERATOR_DEBUG_LEVEL
-Makro angezeigt.
Kompilierungsmodus | Makrowert | Beschreibung |
---|---|---|
Debuggen | ||
0 | Deaktiviert überprüfte Iteratoren und das Iteratordebugging. | |
1 | Aktiviert überprüfte Iteratoren und deaktiviert das Iteratordebugging. | |
2 (Standard) | Aktiviert das Iteratordebugging; überprüfte Iteratoren sind nicht relevant. | |
Release | ||
0 (Standard) | Deaktivierte überprüfte Iteratoren. | |
1 | Aktiviert überprüfte Iteratoren; das Iteratordebugging ist nicht relevant. |
Im Releasemodus generiert der Compiler einen Fehler, wenn Sie _ITERATOR_DEBUG_LEVEL
als 2 angeben.
Hinweise
Das _ITERATOR_DEBUG_LEVEL
-Makro steuert, ob überprüfte Iteratoren aktiviert ist, und im Debugmodus, ob die Unterstützung für Iteratordebugging aktiviert ist. Wenn _ITERATOR_DEBUG_LEVEL
als 1 oder 2 definiert ist, stellen aktivierte Iteratoren sicher, dass die Grenzen des Containers nicht überschrieben werden. Wenn _ITERATOR_DEBUG_LEVEL
gleich 0 ist, werden Iteratoren nicht überprüft. Wenn _ITERATOR_DEBUG_LEVEL
als 1 definiert ist, verursacht die unsichere Verwendung von Iteratoren einen Laufzeitfehler und das Programm wird beendet. Wenn _ITERATOR_DEBUG_LEVEL
als 2 definiert ist, verursacht die unsichere Verwendung von Iteratoren eine Assert-Anweisung und ein Laufzeitfehler-Dialogfeld, dass Sie den Debugger unterbrechen lässt.
Da das _ITERATOR_DEBUG_LEVEL
-Makro ähnliche Funktionalitäten wie die _SECURE_SCL
und _HAS_ITERATOR_DEBUGGING
-Makros unterstützt, sind Sie möglicherweise unsicher, welche Makros und Makrowerte Sie in einer bestimmten Situation verwenden sollten. Um Verwirrung zu vermeiden, wird empfohlen, nur das _ITERATOR_DEBUG_LEVEL
-Makro zu verwenden. Diese Tabelle beschreibt den entsprechenden _ITERATOR_DEBUG_LEVEL
-Makrowert für die Verwendung verschiedener Werte von _SECURE_SCL
und _HAS_ITERATOR_DEBUGGING
in vorhandenem Code.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
---|---|---|
0 (Releasestandard) | 0 (deaktiviert) | 0 (deaktiviert) |
1 | 1 (aktiviert) | 0 (deaktiviert) |
2 (Debug-Standard) | (nicht relevant) | 1 (aktiviert im Debugmodus) |
Informationen zum Deaktivieren von Warnungen zu aktivierten Iteratoren finden Sie unter _SCL_SECURE_NO_WARNINGS
.
Beispiel
Um einen Wert für das _ITERATOR_DEBUG_LEVEL
Makro anzugeben, verwenden Sie eine /D
Compileroption, um ihn in der Befehlszeile zu definieren, oder verwenden #define
Sie, bevor die C++-Standardbibliotheksheader in die Quelldateien aufgenommen werden. Um beispielsweise in der Befehlszeile sample.cpp im Debugmodus zu kompilieren und die Unterstützung für Iteratordebugging zu verwenden, können Sie die _ITERATOR_DEBUG_LEVEL
-Makrodefinition angeben:
cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp
Geben Sie das Makro in einer Quelldatei ein, bevor die Kopfzeilen der Standardbibliothek Iteratoren definieren.
// sample.cpp
#define _ITERATOR_DEBUG_LEVEL 1
#include <vector>
// ...
Siehe auch
Checked Iterators
Unterstützung für Iteratordebugging
Sichere Bibliotheken: C++-Standardbibliothek