Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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";
}
}