_ITERATOR_DEBUG_LEVEL

Makro _ITERATOR_DEBUG_LEVEL určuje, jestli jsou povoleny kontrolované iterátory a podpora ladění iterátoru. Toto makro nahrazuje a kombinuje funkce starších _SECURE_SCL a _HAS_ITERATOR_DEBUGGING maker.

Hodnoty maker

Následující tabulka shrnuje možné hodnoty makra _ITERATOR_DEBUG_LEVEL .

Režim kompilace Hodnota makra Popis
Debug
0 Zakáže kontrolované iterátory a zakáže ladění iterátoru.
1 Povolí zaškrtnuté iterátory a zakáže ladění iterátoru.
2 (výchozí) Umožňuje ladění iterátoru; iterátory nejsou relevantní.
Vydaná verze
0 (výchozí) Zakáže kontrolované iterátory.
1 Umožňuje kontrolovat iterátory; Ladění iterátoru není relevantní.

V režimu vydání kompilátor vygeneruje chybu, pokud zadáte _ITERATOR_DEBUG_LEVEL hodnotu 2.

Poznámky

Makro _ITERATOR_DEBUG_LEVEL určuje, jestli jsou zaškrtnuté iterátory povoleny , a v režimu ladění, zda je povolena podpora iterátoru ladění. Pokud _ITERATOR_DEBUG_LEVEL je definována jako 1 nebo 2, zaškrtnuté iterátory zajistí, že hranice kontejnerů nebudou přepsány. Pokud _ITERATOR_DEBUG_LEVEL je hodnota 0, iterátory se nekontrolují. Pokud _ITERATOR_DEBUG_LEVEL je definována jako 1, jakékoli nebezpečné použití iterátoru způsobí chybu za běhu a program se ukončí. Pokud _ITERATOR_DEBUG_LEVEL je definována jako 2, použití nebezpečného iterátoru způsobí assert a dialogové okno chyby za běhu, které umožňuje rozdělit do ladicího programu.

_ITERATOR_DEBUG_LEVEL Vzhledem k tomu, že makro podporuje podobné funkce _SECURE_SCL jako makra a _HAS_ITERATOR_DEBUGGING makra, možná si nejste jisti, které makro a hodnotu makra použít v konkrétní situaci. Chcete-li zabránit nejasnostem, doporučujeme použít pouze _ITERATOR_DEBUG_LEVEL makro. Tato tabulka popisuje ekvivalentní _ITERATOR_DEBUG_LEVEL hodnotu makra, která se má použít pro různé hodnoty a _HAS_ITERATOR_DEBUGGING v existujícím _SECURE_SCL kódu.

_ITERATOR_DEBUG_LEVEL _SECURE_SCL _HAS_ITERATOR_DEBUGGING
0 (Výchozí verze) 0 (zakázáno) 0 (zakázáno)
1 1 (povoleno) 0 (zakázáno)
2 (výchozí ladění) (není relevantní) 1 (povoleno v režimu ladění)

Informace o zakázání upozornění na kontrolované iterátory naleznete v tématu _SCL_SECURE_NO_WARNINGS.

Příklad

Pokud chcete zadat hodnotu makra _ITERATOR_DEBUG_LEVEL , použijte /D možnost kompilátoru k jeho definování na příkazovém řádku nebo použijte #define před zahrnutím hlaviček standardní knihovny C++ do zdrojových souborů. Pokud chcete například zkompilovat soubor sample.cpp v režimu ladění a použít podporu iterátoru ladění, můžete zadat definici _ITERATOR_DEBUG_LEVEL makra:

cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp

Ve zdrojovém souboru zadejte makro před všemi standardními hlavičkami knihovny, které definují iterátory.

// sample.cpp

#define _ITERATOR_DEBUG_LEVEL 1

#include <vector>

// ...

Viz také

Checked – iterátory
Podpora ladění iterátorů
Bezpečné knihovny: standardní knihovna C++