_ITERATOR_DEBUG_LEVEL
Makro _ITERATOR_DEBUG_LEVEL
określa, czy są włączone iteratory i obsługa iteratorów debugowania. To makro zastępuje i łączy funkcje starszych _SECURE_SCL
i _HAS_ITERATOR_DEBUGGING
makr.
Wartości makr
Poniższa tabela zawiera podsumowanie możliwych wartości makra _ITERATOR_DEBUG_LEVEL
.
Tryb kompilacji | Wartość makra | opis |
---|---|---|
Debug | ||
0 | Wyłącza zaznaczone iteratory i wyłącza debugowanie iteratora. | |
1 | Włącza zaznaczone iteratory i wyłącza debugowanie iteratora. | |
2 (ustawienie domyślne) | Włącza debugowanie iteratora; zaznaczone iteratory nie są istotne. | |
Wydanie | ||
0 (ustawienie domyślne) | Wyłącza zaznaczone iteratory. | |
1 | Włącza zaznaczone iteratory; Debugowanie iteratora nie jest istotne. |
W trybie wydania kompilator generuje błąd, jeśli zostanie określony _ITERATOR_DEBUG_LEVEL
jako 2.
Uwagi
Makro _ITERATOR_DEBUG_LEVEL
określa, czy są włączone iteratory , i w trybie debugowania, czy obsługa iteratora debugowania jest włączona. Jeśli _ITERATOR_DEBUG_LEVEL
jest zdefiniowany jako 1 lub 2, sprawdzane iteratory zapewniają, że granice kontenerów nie zostaną zastąpione. Jeśli _ITERATOR_DEBUG_LEVEL
wartość to 0, iteratory nie są sprawdzane. Gdy _ITERATOR_DEBUG_LEVEL
jest zdefiniowany jako 1, każde niebezpieczne użycie iteratora powoduje błąd środowiska uruchomieniowego i program zostanie zakończony. Gdy _ITERATOR_DEBUG_LEVEL
jest zdefiniowany jako 2, niebezpieczne użycie iteratora powoduje aserowanie i okno dialogowe błędu środowiska uruchomieniowego, które pozwala włamać się do debugera.
_ITERATOR_DEBUG_LEVEL
Ponieważ makro obsługuje podobne funkcje do _SECURE_SCL
makr i_HAS_ITERATOR_DEBUGGING
, może być niepewna, która wartość makra i makra ma być używana w określonej sytuacji. Aby zapobiec nieporozumieniu, zalecamy użycie tylko makra _ITERATOR_DEBUG_LEVEL
. W tej tabeli opisano równoważną _ITERATOR_DEBUG_LEVEL
wartość makra do użycia dla różnych wartości _SECURE_SCL
i _HAS_ITERATOR_DEBUGGING
w istniejącym kodzie.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
---|---|---|
0 (ustawienie domyślne wydania) | 0 (wyłączone) | 0 (wyłączone) |
1 | 1 (włączone) | 0 (wyłączone) |
2 (Debugowanie domyślne) | (nie dotyczy) | 1 (włączone w trybie debugowania) |
Aby uzyskać informacje na temat wyłączania ostrzeżeń dotyczących sprawdzanych iteratorów, zobacz _SCL_SECURE_NO_WARNINGS
.
Przykład
Aby określić wartość _ITERATOR_DEBUG_LEVEL
makra, użyj /D
opcji kompilatora, aby zdefiniować ją w wierszu polecenia lub użyć #define
przed dołączeniu nagłówków biblioteki standardowej języka C++ do plików źródłowych. Na przykład w wierszu polecenia, aby skompilować sample.cpp w trybie debugowania i użyć obsługi iteratora debugowania, można określić definicję _ITERATOR_DEBUG_LEVEL
makra:
cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp
W pliku źródłowym określ makro przed wszelkimi nagłówkami biblioteki standardowej definiującej iteratory.
// sample.cpp
#define _ITERATOR_DEBUG_LEVEL 1
#include <vector>
// ...
Zobacz też
Zaznaczone iteratory
Obsługa iteratora debugowania
Bezpieczne biblioteki: Standardowa biblioteka C++