Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Макрос _ITERATOR_DEBUG_LEVEL управляет включением проверенных итераторов и поддержки отладки итераторов . Этот макрос заменяет и объединяет функциональные возможности более старых макросов _SECURE_SCL и _HAS_ITERATOR_DEBUGGING.
Значение макроса
В следующей таблице описаны возможные значения макроса _ITERATOR_DEBUG_LEVEL.
| Режим компиляции | Значение макроса | Description |
|---|---|---|
| Debug | ||
| 0 | Отключает проверенные итераторы и отключает отладку итераторов. | |
| 1 | Включает проверенные итераторы и отключает отладку итераторов. | |
| 2 (по умолчанию) | Включает отладку итераторов; проверенные итераторы не имеют значения. | |
| Выпуск | ||
| 0 (по умолчанию) | Отключает проверенные итераторы. | |
| 1 | Включает проверенные итераторы; отладка итераторов не имеет значения. |
В режиме релиза компилятор создает ошибку, если указать _ITERATOR_DEBUG_LEVEL как 2.
Замечания
Макрос _ITERATOR_DEBUG_LEVEL управляет включением проверенных итераторов и поддержки отладки итераторов . Если _ITERATOR_DEBUG_LEVEL определен как 1 или 2, проверенные итераторы гарантируют, что границы ваших контейнеров не будут перезаписаны. Если _ITERATOR_DEBUG_LEVEL равно 0, итераторы не проверяются. Если _ITERATOR_DEBUG_LEVEL определен как 1, любое небезопасное использование итераторов вызовет ошибку во время выполнения и программа будет завершена. Когда _ITERATOR_DEBUG_LEVEL определяется как 2, небезопасное использование итератора вызывает подтверждение и появление диалогового ошибки времени выполнения, позволяющее переключиться в режим отладчика.
Так как макрос _ITERATOR_DEBUG_LEVEL поддерживает функциональность, аналогичную макросам _SECURE_SCL и _HAS_ITERATOR_DEBUGGING, в конкретных ситуациях нелегко решить, какие макросы и значения макросов использовать. Чтобы избежать путаницы, рекомендуется использовать только макрос _ITERATOR_DEBUG_LEVEL. В следующей таблице описаны эквивалентные значения макроса _ITERATOR_DEBUG_LEVEL для их использования при различных значениях _SECURE_SCL и _HAS_ITERATOR_DEBUGGING в существующем коде.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
|---|---|---|
| 0 (значение по умолчанию для релиза) | 0 (отключено) | 0 (отключено) |
| 1 | 1 (включено) | 0 (отключено) |
| 2 (значение по умолчанию для отладки) | (неприменимо) | 1 (включено в режиме отладки) |
Сведения об отключении предупреждений о проверяемых итераторах см. в разделе _SCL_SECURE_NO_WARNINGS.
Пример
Чтобы указать значение макроса, используйте /D параметр компилятора, _ITERATOR_DEBUG_LEVEL чтобы определить его в командной строке или использовать #define до включения заголовков стандартной библиотеки C++ в исходные файлы. Например, при работе в командной строке для компиляции sample.cpp в режиме отладки и для использования поддержки отладки итераторов вы можете указать определение макроса_ITERATOR_DEBUG_LEVEL:
cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp
В исходном файле укажите макрос перед любыми заголовками стандартной библиотеки, определяющими итераторы.
// sample.cpp
#define _ITERATOR_DEBUG_LEVEL 1
#include <vector>
// ...
См. также
Checked Iterators
Поддержка итераторов отладки
Безопасные библиотеки: стандартная библиотека C++