Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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