Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hata İletisi
Açıklamalar
C2338 hatası derleme sırasında oluşan bir static_assert hatadan kaynaklanabilir. İleti, parametreler tarafından static_assert sağlanır.
C2338 hatası, derleyiciye dış sağlayıcılar tarafından da oluşturulabilir. Çoğu durumda, bu hatalar ATLPROV gibi bir öznitelik sağlayıcısı DLL'i tarafından bildirilir. Bu iletinin bazı yaygın biçimleri şunlardır:
'attribute' Atl Öznitelik Sağlayıcısı : hata ATLsayıiletisi
'attribute' özniteliğinin yanlış kullanımı
'usage': 'usage' özniteliği için yanlış biçim
Bu hatalar genellikle kurtarılamaz ve ardından önemli bir derleyici hatası gelebilir.
Bu sorunları düzeltmek için öznitelik kullanımını düzeltin. Örneğin, bazı durumlarda öznitelik parametrelerinin kullanılabilmesi için önce bildirilmesi gerekir. ATL hata numarası sağlanmışsa daha ayrıntılı bilgi için bu hatanın belgelerine bakın.
Example
Standart C++11 ve sonraki sürümlerde, constexpr sabit ifadede kullanıldığında işlevler artık varsayılan olarak dikkate alınmaz noexcept . Bu davranış değişikliği Çekirdek Çalışma Grubu (CWG) CWG 1351'in çözünürlüğünden gelir ve modda /permissive- etkinleştirilir. Aşağıdaki örnek Visual Studio 2019 sürüm 16.1 ve önceki sürümlerde derlenmiş ancak Visual Studio 2019 sürüm 16.2'de C2338 üretir:
// c2338.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338.cpp
constexpr int f() { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept"); // C2338 in 16.2
}
Hatayı düzeltmek için ifadeyi noexcept işlev bildirimine ekleyin:
// c2338_fixed.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338_fixed.cpp
constexpr int f() noexcept { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept");
}