c++ - 我应该通过检查 MSVC_LANG 来迎合 MSVC 吗?

标签 c++ visual-c++ cross-platform preprocessor-directive

MSVC 无法正确定义 __cplusplus,除非指定 /Z:cplusplus 开关。

现在,在我维护的库中,我有一些条件编译逻辑,例如:

#if __cplusplus >= 201703L
etc. etc.
#endif

现在 - 因为我希望我的代码是可移植的,并且 MSVC 是 Windows 上流行的编译器 - 我是否应该通过替换该条件来“迎合”它:

#if (__cplusplus >= 201703L) || (_MSVC_LANG >= 201703L)
etc. etc.
#endif

或者我应该使用标准设施,并期望库用户使用/Z:cplusplus

最佳答案

我测试了各种功能宏,而不是 __cplusplus(以 __cpp_inline_variables 为例)。我只是使用 __cplusplus 来区分 C++ 和 C,而不是在各种 C++ 标准之间进行区分。

关于c++ - 我应该通过检查 MSVC_LANG 来迎合 MSVC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72418555/

相关文章:

javascript - jquery ajax跨站

不破坏平台独立性的 Java-Mac OS X 集成

c++ - 有人解释汇编语言级别的左值和右值吗?

c++ - 用于读取音频文件的库

c++ - 多维数组初始化,Initialized with declaration 和Initialize after declaration有什么区别?

c++ - 在没有管理员权限的情况下获取主域 SID

java - 如何识别/处理 Java 中的文本文件换行符?

c++ - 为什么在 C++ 中我需要在已经使用 import 指令之后使用命名空间?

c++ - 使用 QDateTimeAxis 时 QChart 不显示任何系列数据

c++ - 不静态链接到 VC CRT 的原因有哪些?