标准库头文件 <ciso646> (C++20 前), <iso646.h>
来自 cppreference.cn
此头文件最初是 C 标准库中的 <iso646.h>。
兼容性头文件,在 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__ // Note: only version 6.1 or newer define this in ciso646 #error Using GNU libstdc++ #elif _CPPLIB_VER // Note: used by Visual Studio #error Using Microsoft STL #else #error Using an unknown standard library #endif
可能的输出
main.cpp:7:2: error: Using Microsoft STL #error Using Microsoft STL ^ 1 error generated.