Aracılığıyla paylaş


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";
    }
}