if __cplusplus == 201103L || __cplusplus == 201402L,如果要改为是否支持c++17版本该如何改动
时间: 2023-11-21 22:04:42 浏览: 38
如果你想判断编译器是否支持 C++17 标准,你可以使用以下条件判断语句:
```cpp
#if __cplusplus >= 201703L
// 编译器支持 C++17 标准的代码
#else
// 编译器不支持 C++17 标准的代码
#endif
```
这样,如果编译器支持 C++17 标准,则执行 `#if` 和 `#else` 之间的代码;如果不支持,则执行 `#else` 和 `#endif` 之间的代码。
相关问题
MSVC2015 #if __cplusplus < 201103L
这段代码使用了 C++11 中的新特性,用于检测编译器是否支持 C++11 标准。其中 `__cplusplus` 是一个预定义的宏,表示编译器使用的 C++ 标准的版本号。
如果编译器支持 C++11 标准,则 `__cplusplus` 的值应该大于或等于 `201103L`(C++11 的版本号)。因此,这段代码使用条件编译(`#if`)的方式,当编译器不支持 C++11 标准时,定义一个宏 `NO_CXX11_SUPPORT`,并在后面的代码中根据这个宏进行不同的处理。
例如:
```
#if __cplusplus < 201103L
#define NO_CXX11_SUPPORT
#endif
#ifdef NO_CXX11_SUPPORT
// C++11 特性不可用的代码
#else
// C++11 特性可用的代码
#endif
```
这样可以确保代码在不同的编译器和不同的 C++ 标准下都能正常运行。如果你有进一步的问题或需要更多的帮助,请随时提问。
#if __cplusplus
您好!根据您的问题,`__cplusplus` 是一个预定义的宏,用于在 C++ 代码中判断当前编译环境是否为 C++。在 C++ 编译器中,如果编译器支持 C++ 标准,则会定义 `__cplusplus` 宏,并赋予一个整型值。如果代码在 C 编译器环境中编译,则 `__cplusplus` 宏未定义。
因此,您可以使用 `#if __cplusplus` 来判断当前代码是否在 C++ 环境中编译。如果在 C++ 环境中编译,则条件为真,可以执行相关代码;如果在 C 环境中编译,则条件为假,可以忽略相关代码。
请注意,这是一个预处理指令,而不是在运行时进行判断。