诊断指令

来自cppreference.com


 
 
C++ 语言
 
 

显示给定的错误消息并使得程序非良构,或显示给定的警告消息而不影响程序的合法性 (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]

参阅