_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