Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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