컴파일러 경고 C4984
'constexpr'이 C++17 언어 확장인 경우
설명
컴파일러는 기본 C++14 표준을 사용하여 컴파일된 코드에서 식을 찾았습니다 if constexpr
. 이 식은 C++17 표준부터 지정됩니다. C++11 또는 C++14 호환성이 필요한 경우 이 식은 이식 가능하지 않습니다.
C4984는 기본적으로 오류로 발급되지만 억제할 수 없습니다. 코드를 C++17로 컴파일하여 이 식을 사용하도록 설정하려면 모드 이상을 사용합니다 /std:c++17
. C++14용으로 컴파일된 코드에서 식을 Microsoft 확장으로 사용 if constexpr
하려면 오류 메시지의 경고 수준을 표시하지 않거나 사용하지 않도록 설정하거나 변경할 수 있습니다. /wd4984를 사용하여 C4984 또는 /wN4984를 사용하지 않도록 설정하여 오류 대신 수준 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";
}
}