/Zc:strictStrings (Désactiver la conversion du type de littéral de chaîne)/Zc:strictStrings (Disable string literal type conversion)

Quand il est spécifié, le compilateur requiert une conformité de qualification const stricte pour les pointeurs initialisés à l'aide de littéraux de chaîne.When specified, the compiler requires strict const-qualification conformance for pointers initialized by using string literals.

SyntaxeSyntax

/Zc:strictStrings[-]/Zc:strictStrings[-]

NotesRemarks

Si /Zc : strictstrings est spécifié, le compilateur applique le standard C++ const qualifications littéraux de chaîne, en tant que type ' tableau de const char' ou ' tableau de const wchar_t», en fonction de la déclaration.If /Zc:strictStrings is specified, the compiler enforces the standard C++ const qualifications for string literals, as type 'array of const char' or 'array of const wchar_t', depending on the declaration. Les littéraux de chaîne sont immuables et une tentative de modification du contenu d'un de ces littéraux entraîne une erreur de violation d'accès au moment de l'exécution.String literals are immutable, and an attempt to modify the contents of one results in an access violation error at run time. Vous devez déclarer un pointeur de chaîne en tant que const pour l'initialiser en utilisant un littéral de chaîne ou utilisez un const_cast explicite pour initialiser un pointeur non const.You must declare a string pointer as const to initialize it by using a string literal, or use an explicit const_cast to initialize a non-const pointer. Par défaut, ou si /Zc:strictStrings- est spécifié, le compilateur n’applique pas le standard C++ const qualifications pour les pointeurs de chaîne initialisés à l’aide de littéraux de chaîne.By default, or if /Zc:strictStrings- is specified, the compiler does not enforce the standard C++ const qualifications for string pointers initialized by using string literals.

Le /Zc : strictstrings option est désactivée par défaut.The /Zc:strictStrings option is off by default. Le / permissive- option du compilateur définit implicitement cette option, mais elle peut être substituée à l’aide de /Zc:strictStrings-.The /permissive- compiler option implicitly sets this option, but it can be overridden by using /Zc:strictStrings-.

Utilisez le /Zc : strictstrings option pour empêcher la compilation de code incorrect.Use the /Zc:strictStrings option to prevent compilation of incorrect code. Cet exemple montre comment une simple erreur de déclaration conduit à un incident au moment de l'exécution :This example shows how a simple declaration error leads to a crash at run time:

// strictStrings_off.cpp
// compile by using: cl /W4 strictStrings_off.cpp
int main() {
   wchar_t* str = L"hello";
   str[2] = L'a'; // run-time error: access violation
}

Lorsque /Zc : strictstrings est activé, le même code signale une erreur dans la déclaration de str.When /Zc:strictStrings is enabled, the same code reports an error in the declaration of str.

// strictStrings_on.cpp
// compile by using: cl /Zc:strictStrings /W4 strictStrings_on.cpp
int main() {
   wchar_t* str = L"hello"; // error: Conversion from string literal
   // loses const qualifier
   str[2] = L'a';
}

Si vous utilisez auto pour déclarer un pointeur de chaîne, le compilateur crée automatiquement la déclaration de type de pointeur const correcte.If you use auto to declare a string pointer, the compiler creates the correct const pointer type declaration for you. Une tentative de modification du contenu d'un pointeur const est signalée par le compilateur en tant qu'erreur.An attempt to modify the contents of a const pointer is reported by the compiler as an error.

Notes

La bibliothèque Standard C++ dans Visual Studio 2013 ne prend pas en charge la /Zc : strictstrings génère de l’option du compilateur en mode de débogage.The C++ Standard Library in Visual Studio 2013 does not support the /Zc:strictStrings compiler option in debug builds. Si vous voyez plusieurs C2665 erreurs dans votre build de sortie, cela peut être la cause.If you see several C2665 errors in your build output, this may be the cause.

Pour plus d’informations sur les problèmes de conformité dans Visual C++, consultez Nonstandard Behavior.For more information about conformance issues in Visual C++, see Nonstandard Behavior.

Pour définir cette option du compilateur dans l'environnement de développement Visual StudioTo set this compiler option in the Visual Studio development environment

  1. Ouvrez la boîte de dialogue Pages de propriété du projet.Open the project's Property Pages dialog box. Pour plus d’informations, consultez propriétés de compilateur et de build C++ définie dans Visual Studio.For details, see Set C++ compiler and build properties in Visual Studio.

  2. Sélectionnez le propriétés de Configuration > C/C++ > ligne de commande page de propriétés.Select the Configuration Properties > C/C++ > Command Line property page.

  3. Modifier le des Options supplémentaires propriété à inclure /Zc : strictstrings , puis OK.Modify the Additional Options property to include /Zc:strictStrings and then choose OK.

Voir aussiSee also

/Zc (Conformité)/Zc (Conformance)