Udostępnij za pośrednictwem


_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++