Standard library header <ciso646> (until C++20) , <iso646.h>
From cppreference.net
C++
Standard library headers
该头文件最初作为 <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 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.