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/