c++ MSVC编译器警告c4984

gmol1639  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(121)

我试图实现一个DLL,并提供一些接口给我无法控制的遗留VS2017 C14项目。
我想在头文件中使用if constexpr表达式,发现编译器会抱怨C4984。不知道“可移植”是什么意思:
如果您需要C
11或C++14兼容性,则此表达式不可移植。
默认情况下,C4984作为错误发出,但它是可以隐藏的。
我在我的if constexpr表达式之前添加了#pragma warning(disable : 4984),发现遗留项目可以很好地编译和运行,那么我需要担心“可移植”的事情吗?

ars1skjm

ars1skjm1#

if constexpr是C17的一个特性。它不能在C14中使用。如果编译器允许它在C++14模式下使用(带有警告),那么这是一个扩展。其他编译器,特别是旧的编译器,不会这样做。
#pragma warning(disable : 4984)当然不是可移植的,它是MSVC特有的。

相关问题