Megosztás a következőn keresztül:


Fordító figyelmeztetésE C4984

Az "if constexpr" egy C++17 nyelvi bővítmény

Megjegyzések

A fordító talált egy if constexpr kifejezést az alapértelmezett C++14 szabvány használatával lefordított kódban. Ez a kifejezés a C++17 szabványtól kezdve van megadva. Ha C++11 vagy C++14 kompatibilitást igényel, ez a kifejezés nem hordozható.

A C4984 alapértelmezés szerint hibaként jelenik meg, de ez letiltható. Ha engedélyezni szeretné ezt a kifejezést a kód C++17-ként való fordításával, használjon /std:c++17 módot vagy újabb verziót. A C++14-hez lefordított kódban a kifejezés Microsoft-bővítményként való használatához if constexpr letilthatja, letilthatja vagy módosíthatja a hibaüzenet figyelmeztetési szintjét. A /wd4984 használatával letilthatja a C4984- vagy a /wN4984-et , hogy hiba helyett N szintű figyelmeztetésként engedélyezze azt. Vagy használja #pragma warning(suppress:4984) a forrásfájlban a figyelmeztetést okozó sor előtt.

Ez a figyelmeztetés a Visual Studio 2017 15.3-s verziójától kezdve érhető el. Az adott fordítóverzióban vagy újabb verzióban bevezetett figyelmeztetések letiltásáról további információt a Fordító figyelmeztetései fordítóverzió szerint című témakörben talál.

Example

Ez a példa létrehozza a C4984-et, és a javítás módjait mutatja be:

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