Sdílet prostřednictvím


/Zc:strictStrings (Zakázání převodů typů řetězcových literálů)

Je-li zadána, kompilátor vyžaduje přísné const-kvalifikace kompatibilitu ukazatele inicializována pomocí řetězcových.

/Zc:strictStrings[-]

Poznámky

If /Zc:strictStrings is specified, the compiler enforces the standard C++ const qualifications for string literals, as type 'array of constchar' or 'array of constwchar_t', depending on the declaration.Řetězcové literály jsou nezměnitelné a pokusu o změnu obsah jedné má za následek chybu narušení přístupu v době běhu.Musíte deklarovat řetězec ukazatel jako const inicializovat ji pomocí řetězcový literál nebo použít explicitní const_cast k inicializaci jinou hodnotu nežconst ukazatel myši.Ve výchozím nastavení nebo pokud /Zc:strictStrings- není zadán, kompilátor nevynucuje standard C++ const kvalifikace inicializována pomocí řetězcových ukazatele řetězec.

Použití /Zc:strictStrings volbu, abyste zabránili kompilace nesprávný kód.Tento příklad ukazuje, jak chybu jednoduché prohlášení vede k chybě za běhu:

// 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
}

Při /Zc:strictStrings je povolen, stejný kód zobrazí chybová zpráva: v prohlášení o 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'; 
}

Pokud použijete auto deklarovat ukazatel na řetězec, kompilátor vytvoří správnou const ukazatel deklarace typu pro vás.Pokus o úpravu obsahu const ukazatel vykáže kompilátor jako chybu.

[!POZNÁMKA]

Standardní knihovny C++ v Visual C++ v sadě Visual Studio 2013 nepodporuje /Zc:strictStrings sestaví možnosti kompilátoru pro ladění.Je-li zobrazit několik C2665 chyby při sestavení výstupu, může to být způsobeno.

Další informace o problémech shody v jazyce Visual C++ naleznete v tématu Nestandardní chování.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností svého projektu.Podrobnosti naleznete v tématu Práce s vlastnostmi projektu.

  2. Vyberte C/C++ složky.

  3. Vyberte stránku vlastností Příkazový řádek.

  4. Změnit další možnosti vlastnost, aby zahrnovala /Zc:strictStrings a poté zvolte možnost OK.

Viz také

Referenční dokumentace

/Zc (shoda)