編譯程式警告 C4984
'if constexpr' 是 C++17 語言延伸模組
備註
編譯程式 if constexpr
在使用預設C++14標準編譯的程序代碼中找到表達式。 從 C++17 標準開始指定此運算式。 如果您需要C++11 或C++14 兼容性,則此表達式無法移植。
C4984 預設會以錯誤的形式發出,但它是隱藏的。 若要將程式代碼編譯為 C++17 來啟用此運算式,請使用 /std:c++17
模式或更新版本。 若要在 if constexpr
針對 C++14 編譯的程式代碼中使用表示式作為Microsoft延伸模組,您可以隱藏、停用或變更錯誤訊息的警告層級。 您可以使用 /wd4984 來停用 C4984 或 /wN 4984,將它啟用為層級 N 警告,而不是錯誤。 或者,請在造成來源檔案中警告的行之前使用 #pragma warning(suppress:4984)
。
從 Visual Studio 2017 15.3 版開始,即可使用此警告。 如需如何停用特定編譯程式版本或更新版本中引進的警告的相關信息,請參閱 編譯程式版本的編譯程式警告。
範例
此範例會產生 C4984,並示範修正方法:
// 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";
}
}