/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
Otevřete dialogové okno Stránky vlastností svého projektu.Podrobnosti naleznete v tématu Práce s vlastnostmi projektu.
Vyberte C/C++ složky.
Vyberte stránku vlastností Příkazový řádek.
Změnit další možnosti vlastnost, aby zahrnovala /Zc:strictStrings a poté zvolte možnost OK.