_ITERATOR_DEBUG_LEVEL
Makro, _ITERATOR_DEBUG_LEVEL
denetlenen yineleyicilerin ve hata ayıklama yineleyicisi desteğinin etkinleştirilip etkinleştirilmediğini denetler. Bu makro, eski _SECURE_SCL
ve makroların işlevlerinin yerini alır ve _HAS_ITERATOR_DEBUGGING
birleştirir.
Makro Değerleri
Aşağıdaki tabloda makro için olası değerler özetlemektedir _ITERATOR_DEBUG_LEVEL
.
Derleme modu | Makro değeri | Açıklama |
---|---|---|
Hata Ayıklama | ||
0 | denetlenen yineleyicileri devre dışı bırakır ve yineleyici hata ayıklamasını devre dışı bırakır. | |
1 | Denetlenen yineleyicileri etkinleştirir ve yineleyici hata ayıklamasını devre dışı bırakır. | |
2 (Varsayılan) | Yineleyici hata ayıklamasını etkinleştirir; denetlenen yineleyiciler ilgili değildir. | |
Sürüm | ||
0 (Varsayılan) | denetlenen yineleyicileri devre dışı bırakır. | |
1 | denetlenen yineleyicileri etkinleştirir; yineleyici hata ayıklaması uygun değildir. |
Sürüm modunda, 2 olarak belirtirseniz _ITERATOR_DEBUG_LEVEL
derleyici bir hata oluşturur.
Açıklamalar
Makro, _ITERATOR_DEBUG_LEVEL
denetlenen yineleyicilerin etkinleştirilip etkinleştirilmediğini ve Hata ayıklama modunda hata ayıklama yineleyicisi desteğinin etkinleştirilip etkinleştirilmediğini denetler. 1 veya 2 olarak tanımlanmışsa _ITERATOR_DEBUG_LEVEL
, denetlenen yineleyiciler kapsayıcılarınızın sınırlarının üzerine yazılmadığından emin olun. 0 ise _ITERATOR_DEBUG_LEVEL
, yineleyiciler işaretlenmez. 1 olarak tanımlandığında _ITERATOR_DEBUG_LEVEL
, herhangi bir güvenli olmayan yineleyici kullanımı çalışma zamanı hatasına neden olur ve program sonlandırılır. 2 olarak tanımlandığında _ITERATOR_DEBUG_LEVEL
, güvenli olmayan yineleyici kullanımı, hata ayıklayıcıya girmenizi sağlayan bir onay ve çalışma zamanı hata iletişim kutusuna neden olur.
_ITERATOR_DEBUG_LEVEL
Makro ve _HAS_ITERATOR_DEBUGGING
makrolarına benzer işlevleri desteklediğinden_SECURE_SCL
, belirli bir durumda hangi makro ve makro değerini kullanacağınızdan emin olmayabilirsiniz. Karışıklığı önlemek için yalnızca makroyu _ITERATOR_DEBUG_LEVEL
kullanmanızı öneririz. Bu tabloda, var olan kodun çeşitli değerleri _SECURE_SCL
_HAS_ITERATOR_DEBUGGING
ve için kullanılacak eşdeğer _ITERATOR_DEBUG_LEVEL
makro değeri açıklanmaktadır.
_ITERATOR_DEBUG_LEVEL |
_SECURE_SCL |
_HAS_ITERATOR_DEBUGGING |
---|---|---|
0 (Varsayılan sürüm) | 0 (devre dışı) | 0 (devre dışı) |
1 | 1 (etkin) | 0 (devre dışı) |
2 (Varsayılan hata ayıklama) | (ilgili değil) | 1 (Hata ayıklama modunda etkin) |
denetlenen yineleyicilerle ilgili uyarıları devre dışı bırakma hakkında bilgi için bkz _SCL_SECURE_NO_WARNINGS
. .
Örnek
Makro için bir değer belirtmek için, komut satırında tanımlamak üzere _ITERATOR_DEBUG_LEVEL
bir /D
derleyici seçeneği kullanın veya kaynak dosyalarınıza C++ Standart Kitaplığı üst bilgileri eklenmeden önce kullanın #define
. Örneğin, komut satırında sample.cpp hata ayıklama modunda derlemek ve hata ayıklama yineleyicisi desteğini kullanmak için makro tanımını belirtebilirsiniz_ITERATOR_DEBUG_LEVEL
:
cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp
Kaynak dosyada, yineleyicileri tanımlayan standart kitaplık üst bilgilerinden önce makroyu belirtin.
// sample.cpp
#define _ITERATOR_DEBUG_LEVEL 1
#include <vector>
// ...
Ayrıca bkz.
Denetlenmiş Yineleyiciler
Hata Ayıklama Yineleyici Desteği
Güvenli Kitaplıklar: C++ Standart Kitaplık