/Zc:strictStrings
(Dize değişmez değer türü dönüştürmeyi devre dışı bırak)
Belirtildiğinde, derleyici dize değişmez değerleri kullanılarak başlatılan işaretçiler için katı const
niteleme uyumluluğu gerektirir.
Sözdizimi
/Zc:strictStrings
[-
]
Açıklamalar
Belirtilirse/Zc:strictStrings
, derleyici, bildirime bağlı olarak dize değişmez değerleri için 'dizisi' veya 'dizisiconst char
const wchar_t
' türü olarak standart C++ const
nitelemelerini zorlar. Dize değişmez değerleri sabittir ve bir dizenin içeriğini değiştirme girişimi, çalışma zamanında erişim ihlali hatasıyla sonuçlanır. Dize sabit değeri kullanarak başlatmak için olarak const
bir dize işaretçisi bildirmeniz veya işaretçi olmayanconst
bir başlatmak için bir açık const_cast
kullanmanız gerekir. Varsayılan olarak veya belirtilirse /Zc:strictStrings-
, derleyici dize değişmez değerleri kullanılarak başlatılan dize işaretçileri için standart C++ const
nitelemelerini zorlamaz.
Seçenek /Zc:strictStrings
varsayılan olarak kapalıdır. Derleyici /permissive-
seçeneği bu seçeneği örtük olarak ayarlar, ancak kullanılarak /Zc:strictStrings-
geçersiz kılınabilir.
Yanlış kodun /Zc:strictStrings
derlenmesini önlemek için seçeneğini kullanın. Bu örnekte basit bir bildirim hatasının çalışma zamanında kilitlenmeye nasıl yol açtığı gösterilmektedir:
// 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
}
Etkinleştirildiğinde /Zc:strictStrings
, aynı kod bildiriminde str
bir hata bildirir.
// 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';
}
Dize işaretçisi bildirmek için kullanırsanız auto
, derleyici sizin için doğru const
işaretçi türü bildirimini oluşturur. bir işaretçinin const
içeriğini değiştirme girişimi, derleyici tarafından hata olarak bildirilir.
Dekont
Visual Studio 2013'teki C++ Standart Kitaplığı, hata ayıklama derlemelerinde derleyici seçeneğini desteklemez /Zc:strictStrings
. Derleme çıkışınızda birkaç C2665 hatası görürseniz, bunun nedeni bu olabilir.
Visual C++'daki uyumluluk sorunları hakkında daha fazla bilgi için bkz . Standart Dışı Davranış.
Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.
Ek Seçenekler özelliğini içerecek
/Zc:strictStrings
şekilde değiştirin ve tamam'ı seçin.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin