Udostępnij za pośrednictwem


/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

  1. Otwórz okno dialogowe projektu Strony właściwości.Szczegółowe informacje – zobacz: Praca z właściwościami projektu.

  2. Wybierz C/C++ folder.

  3. Wybierz stronę właściwości Wiersz polecenia.

  4. Modyfikuj dodatkowe opcje właściwości do włączenia /Zc:strictStrings , a następnie wybierz OK.

Zobacz też

Informacje

/Zc (Zgodność)