_ITERATOR_DEBUG_LEVEL
_ITERATOR_DEBUG_LEVEL
Makro mengontrol apakah iterator yang diperiksa dan dukungan iterator debug diaktifkan. Makro ini menggantikan dan menggabungkan fungsionalitas yang lebih _SECURE_SCL
lama dan _HAS_ITERATOR_DEBUGGING
makro.
Nilai Makro
Tabel berikut ini meringkas nilai yang mungkin untuk _ITERATOR_DEBUG_LEVEL
makro.
Mode kompilasi | Nilai makro | Deskripsi |
---|---|---|
Debug | ||
0 | Menonaktifkan iterator yang diperiksa dan menonaktifkan penelusuran kesalahan iterator. | |
1 | Mengaktifkan iterator yang diperiksa dan menonaktifkan penelusuran kesalahan iterator. | |
2 (Default) | Mengaktifkan penelusuran kesalahan iterator; iterator yang diperiksa tidak relevan. | |
Rilis | ||
0 (Default) | Menonaktifkan iterator yang diperiksa. | |
1 | Mengaktifkan iterator yang diperiksa; penelusuran kesalahan iterator tidak relevan. |
Dalam mode rilis, pengkompilasi menghasilkan kesalahan jika Anda menentukan _ITERATOR_DEBUG_LEVEL
sebagai 2.
Keterangan
_ITERATOR_DEBUG_LEVEL
Makro mengontrol apakah iterator yang diperiksa diaktifkan, dan dalam mode Debug, apakah dukungan iterator debug diaktifkan. Jika _ITERATOR_DEBUG_LEVEL
didefinisikan sebagai 1 atau 2, iterator yang diperiksa memastikan bahwa batas kontainer Anda tidak ditimpa. Jika _ITERATOR_DEBUG_LEVEL
0, iterator tidak diperiksa. Ketika _ITERATOR_DEBUG_LEVEL
didefinisikan sebagai 1, penggunaan iterator yang tidak aman menyebabkan kesalahan runtime dan program dihentikan. Ketika _ITERATOR_DEBUG_LEVEL
didefinisikan sebagai 2, penggunaan iterator yang tidak aman menyebabkan pernyataan dan dialog kesalahan runtime yang memungkinkan Anda masuk ke debugger.
_ITERATOR_DEBUG_LEVEL
Karena makro mendukung fungsionalitas _SECURE_SCL
yang sama dengan makro dan _HAS_ITERATOR_DEBUGGING
, Anda mungkin tidak yakin makro dan nilai makro mana yang akan digunakan dalam situasi tertentu. Untuk mencegah kebingungan _ITERATOR_DEBUG_LEVEL
, kami sarankan Anda hanya menggunakan makro. Tabel ini menjelaskan nilai makro yang setara _ITERATOR_DEBUG_LEVEL
untuk digunakan untuk berbagai nilai _SECURE_SCL
dan _HAS_ITERATOR_DEBUGGING
dalam kode yang ada.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
---|---|---|
0 (Rilis default) | 0 (dinonaktifkan) | 0 (dinonaktifkan) |
1 | 1 (diaktifkan) | 0 (dinonaktifkan) |
2 (Debug default) | (tidak relevan) | 1 (diaktifkan dalam mode Debug) |
Untuk informasi tentang cara menonaktifkan peringatan tentang iterator yang diperiksa, lihat _SCL_SECURE_NO_WARNINGS
.
Contoh
Untuk menentukan nilai untuk _ITERATOR_DEBUG_LEVEL
makro, gunakan /D
opsi pengkompilasi untuk menentukannya pada baris perintah, atau gunakan #define
sebelum header Pustaka Standar C++ disertakan dalam file sumber Anda. Misalnya, pada baris perintah, untuk mengkompilasi sample.cpp dalam mode debug dan menggunakan dukungan iterator debug, Anda dapat menentukan _ITERATOR_DEBUG_LEVEL
definisi makro:
cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp
Dalam file sumber, tentukan makro sebelum header pustaka standar yang menentukan iterator.
// sample.cpp
#define _ITERATOR_DEBUG_LEVEL 1
#include <vector>
// ...
Lihat juga
Iterator Yang Diperiksa
Debug Dukungan Iterator
Pustaka Aman: Pustaka Standar C++