诊断指令
来自cppreference.com
< cpp | preprocessor
显示给定的错误消息并使得程序非良构,或显示给定的警告消息而不影响程序的合法性(C++23 起)。
目录 |
[编辑]语法
#error 诊断消息 | (1) | ||||||||
#warning 诊断消息 | (2) | (C++23 起) | |||||||
[编辑]解释
1) 实现在遇到 #error 指令后,显示消息诊断消息,并令程序非良构(停止编译)。
2) 同 (1),但不影响程序的合法性并且编译继续。
诊断消息 可以由不必带有引号的多个单词组成。
[编辑]注解
在其于 C++23 的标准化前,#warning 已经被许多编译器作为遵从的扩展提供。
[编辑]示例
运行此代码
#if __STDC_HOSTED__ != 1# error "不是宿主式实现"#endif #if __cplusplus >= 202302L# warning "将 #warning 作为标准特性使用"#endif #include <iostream> int main(){std::cout<<"所用实现为宿主式\n";}
可能的输出:
所用实现为宿主式
[编辑]引用
- C++23 标准(ISO/IEC 14882:2024):
- 15.8 Error directive [cpp.error]
- C++20 标准(ISO/IEC 14882:2020):
- 15.8 Error directive [cpp.error]
- C++17 标准(ISO/IEC 14882:2017):
- 19.5 Error directive [cpp.error]
- C++14 标准(ISO/IEC 14882:2014):
- 16.5 Error directive [cpp.error]
- C++11 标准(ISO/IEC 14882:2011):
- 16.5 Error directive [cpp.error]
- C++03 标准(ISO/IEC 14882:2003):
- 16.5 Error directive [cpp.error]
- C++98 标准(ISO/IEC 14882:1998):
- 16.5 Error directive [cpp.error]
[编辑]参阅
诊断指令的 C 文档 |