标准库标头 <ciso646> (C++20 前), <iso646.h>
来自cppreference.com
此标头原作为 <iso646.h> 存在于 C 标准库。
兼容性头文件,在 C 中定义代用运算符表示,而它们在 C++ 中是关键词。
这表明在服从标准的实现中,包含此头文件无效果。
注解
在旧的或非遵从编译器中,使用代用运算符表示可能仍需要包含此头文件。
<ciso646>
于 C++20 中移除。对应的 <iso646.h>
在 C++20 中仍可用。
C++20 前,包含 <ciso646>
有时作为一种技巧,用于获得实现特定的库版本宏而不导致其他效果。
C++20 开始,为此目的添加了头文件 <version>。
运行此代码
#include <ciso646> #ifdef _LIBCPP_VERSION #error Using LLVM libc++ #elif __GLIBCXX__ // 注意:仅 6.1 或更新的版本在 ciso646 中定义它 #error Using GNU libstdc++ #elif _CPPLIB_VER // 注意:为 Visual Studio 所用 #error Using Dinkumware STL #else #error Using an unknown standard library #endif
可能的输出:
main.cpp:7:2: error: Using Microsoft STL #error Using Microsoft STL ^ 1 error generated.