Partage via


_ITERATOR_DEBUG_LEVEL

La macro _ITERATOR_DEBUG_LEVEL contrôle si les itérateurs vérifiés et la prise en charge d’itérateur de débogage sont activés. Cette macro remplace et combine les fonctionnalités des anciennes macros _SECURE_SCL et _HAS_ITERATOR_DEBUGGING.

Valeurs de macro

Le tableau suivant récapitule les valeurs possibles de la macro _ITERATOR_DEBUG_LEVEL.

Mode de compilation Valeur de macro Description
Déboguer
0 Désactive les itérateurs vérifiés et désactive le débogage d’itérateur.
1 Active les itérateurs vérifiés et désactive le débogage d’itérateur.
2 (Par défaut) Active le débogage d’itérateur. Les itérateurs vérifiés ne sont pas pertinents.
Version release
0 (par défaut) Désactive les itérateurs vérifiés.
1 Active les itérateurs vérifiés. Le débogage d’itérateur n’est pas pertinent.

En mode Version release, le compilateur génère une erreur si vous affectez la valeur 2 à _ITERATOR_DEBUG_LEVEL.

Notes

La macro _ITERATOR_DEBUG_LEVEL contrôle si les itérateurs vérifiés sont activés et, en mode Débogage, si la prise en charge d’itérateur de débogage est activée. Si _ITERATOR_DEBUG_LEVEL a la valeur 1 ou 2, les itérateurs vérifiés garantissent que les limites de vos conteneurs ne sont pas remplacées. Si _ITERATOR_DEBUG_LEVEL a la valeur 0, les itérateurs ne sont pas vérifiés. Si _ITERATOR_DEBUG_LEVEL a la valeur 1, toute utilisation non sécurisée d’un itérateur provoque une erreur d’exécution et le programme se termine. Quand _ITERATOR_DEBUG_LEVEL a la valeur 2, toute utilisation non sécurisée d’un itérateur provoque une assertion et l’affichage d’une boîte de dialogue d’erreur d’exécution qui vous permet de travailler dans le débogueur.

Étant donné que la macro _ITERATOR_DEBUG_LEVEL prend en charge des fonctionnalités similaires aux macros _SECURE_SCL et _HAS_ITERATOR_DEBUGGING, vous pouvez avoir des doutes quant à la macro et à la valeur de macro à utiliser dans une situation particulière. Pour éviter toute confusion, nous vous recommandons d’utiliser uniquement la macro _ITERATOR_DEBUG_LEVEL. Le tableau suivant décrit la valeur de macro _ITERATOR_DEBUG_LEVEL équivalente à utiliser pour différentes valeurs de _SECURE_SCL et _HAS_ITERATOR_DEBUGGING dans le code existant.

_ITERATOR_DEBUG_LEVEL _SECURE_SCL _HAS_ITERATOR_DEBUGGING
0 (valeur par défaut en mode Version release) 0 (désactivé) 0 (désactivé)
1 1 (activé) 0 (désactivé)
2 (valeur par défaut en mode Débogage) (non pertinent) 1 (activé en mode Débogage)

Pour plus d’informations sur la désactivation des avertissements sur les itérateurs vérifiés, consultez _SCL_SECURE_NO_WARNINGS.

Exemple

Pour spécifier une valeur pour la macro, utilisez une /D option de _ITERATOR_DEBUG_LEVEL compilateur pour la définir sur la ligne de commande ou utilisez-la #define avant que les en-têtes de bibliothèque C++ Standard soient inclus dans vos fichiers sources. Par exemple, sur la ligne de commande, pour compiler sample.cpp en mode Débogage et pour utiliser la prise en charge d’itérateur de débogage, vous pouvez spécifier la définition de macro _ITERATOR_DEBUG_LEVEL :

cl /EHsc /Zi /MDd /D_ITERATOR_DEBUG_LEVEL=1 sample.cpp

Dans un fichier source, spécifiez la macro avant les en-têtes de bibliothèque standard qui définissent les itérateurs.

// sample.cpp

#define _ITERATOR_DEBUG_LEVEL 1

#include <vector>

// ...

Voir aussi

Checked Iterators
Prise en charge de l’itérateur de débogage
Bibliothèques sécurisées : bibliothèque C++ Standard