Derleyici Uyarısı C4984
'if constexpr' bir C++17 dil uzantısıdır
Açıklamalar
Derleyici, kodda varsayılan C++14 standardı kullanılarak derlenmiş bir if constexpr
ifade buldu. Bu ifade C++17 standardında başlayarak belirtilir. C++11 veya C++14 uyumluluğuna ihtiyacınız varsa, bu ifade taşınabilir değildir.
C4984 varsayılan olarak bir hata olarak verilir, ancak gizlenebilir. Kodunuzu C++17 olarak derleyerek bu ifadeyi etkinleştirmek için modu veya üzerini kullanın /std:c++17
. İfadeyi if constexpr
C++14 için derlenmiş kodda bir Microsoft uzantısı olarak kullanmak için hata iletisinin uyarı düzeyini gizleyebilir, devre dışı bırakabilir veya değiştirebilirsiniz. C4984'ü devre dışı bırakmak için /wd4984 veya hata yerine düzey N uyarısı olarak etkinleştirmek için /wN 4984 kullanabilirsiniz. Veya kaynak dosyanızda uyarıya neden olan satırdan önce kullanın #pragma warning(suppress:4984)
.
Bu uyarı Visual Studio 2017 sürüm 15.3'den itibaren kullanılabilir. Belirli bir derleyici sürümünde veya sonraki sürümlerinde sunulan uyarıları devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre Derleyici Uyarıları.
Örnek
Bu örnek C4984 oluşturur ve düzeltmenin yollarını gösterir:
// C4984.cpp
// compile with: cl /EHsc C4984.cpp
#include <iostream>
int main()
{
constexpr bool compile_time = true;
// Uncomment the following line or use /std:c++17 to fix
// #pragma warning(suppress:4984)
if constexpr (compile_time)
{
std::cout << "compile_time is true";
}
else
{
std::cout << "compile_time is false";
}
}