_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>

// ...

Baca juga

Iterator Yang Diperiksa
Debug Dukungan Iterator
pustaka Brankas: Pustaka Standar C++