/Zc:strictStrings (Wyłączanie konwersji typów literału ciągu)
Jeśli zostanie określony, kompilator wymaga ścisłych const— zgodność kwalifikacji wskaźniki zainicjowana przy użyciu literały.
/Zc:strictStrings[-]
Uwagi
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.Literały są niezmienna, a próba zmodyfikowania zawartości, co powoduje błąd naruszenia zasad dostępu w czasie wykonywania.Można zadeklarować wskaźnik ciągu jako const go zainicjować za pomocą literałem ciągu lub Użyj jawnego const_cast zainicjowania innejconst wskaźnik.Domyślnie lub, jeśli /Zc:strictStrings- jest określony, kompilator nie wymusza standard C++ const kwalifikacji zainicjowana przy użyciu literały wskaźniki ciągu.
Użyj /Zc:strictStrings opcję, aby uniemożliwić kompilacja nieprawidłowy kod.Ten przykład przedstawia, jak to błąd prosty deklaracji prowadzi do awarii w czasie wykonywania:
// 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
}
Gdy /Zc:strictStrings jest włączony, ten sam kod zgłasza błąd w deklaracji 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';
}
Jeśli użyjesz auto do deklarowania wskaźnik ciągu, kompilator tworzy prawidłowego const deklaracji typu wskaźnik dla Ciebie.Próba zmodyfikowania zawartości const wskaźnik jest zgłaszany jako błąd kompilatora.
[!UWAGA]
Standardowa biblioteka języka C++ w Visual C++ w programie Visual Studio 2013 nie obsługuje /Zc:strictStrings tworzy opcję kompilatora podczas debugowania.Jeśli widzisz kilka C2665 danych wyjściowych błędy w kompilacji, może to być przyczyną.
Aby uzyskać więcej informacji dotyczących zgodności w programie Visual C++, zobacz Niestandardowe zachowanie.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe projektu Strony właściwości.Szczegółowe informacje – zobacz: Praca z właściwościami projektu.
Wybierz C/C++ folder.
Wybierz stronę właściwości Wiersz polecenia.
Modyfikuj dodatkowe opcje właściwości do włączenia /Zc:strictStrings , a następnie wybierz OK.