_ITERATOR_DEBUG_LEVEL
_ITERATOR_DEBUG_LEVEL
매크로는 확인된 반복기 및 디버그 반복기 지원이 사용되는지 여부를 제어합니다. 이 매크로는 이전 _SECURE_SCL
및 _HAS_ITERATOR_DEBUGGING
매크로의 기능을 대체하고 결합합니다.
매크로 값
다음 표에는 _ITERATOR_DEBUG_LEVEL
매크로에 가능한 값이 요약되어 있습니다.
컴파일 모드 | 매크로 값 | 설명 |
---|---|---|
디버그 | ||
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
매크로만 사용하는 것이 좋습니다. 다음 표에서는 기존 코드의 다양한 _SECURE_SCL
및 _HAS_ITERATOR_DEBUGGING
값에 사용할 해당 _ITERATOR_DEBUG_LEVEL
매크로 값에 대해 설명합니다.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
---|---|---|
0(릴리스 기본값) | 0(사용 안 함) | 0(사용 안 함) |
1 | 1(사용) | 0(사용 안 함) |
2(디버그 기본값) | (관련 없음) | 1(디버그 모드에서 사용) |
확인된 반복기에 대한 경고를 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 다음을 참조하세요 _SCL_SECURE_NO_WARNINGS
.
예시
매크로 값을 _ITERATOR_DEBUG_LEVEL
지정하려면 컴파일러 옵션을 사용하여 /D
명령줄에서 정의하거나 C++ 표준 라이브러리 헤더가 원본 파일에 포함되기 전에 사용합니다 #define
. 예를 들어 명령줄에서 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>
// ...