_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. | |
0 | 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. | |
0 | 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) |
0 | 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 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++