命名空间
变体
操作

诊断指令

来自 cppreference.com
 
 
C++ 语言
 
 

显示给定的错误消息并使程序格式错误,或显示给定的警告消息而不影响程序的有效性(自 C++23 起).

内容

[编辑] 语法

#error 诊断消息 (1)
#warning 诊断消息 (2) (自 C++23 起)

[编辑] 解释

1) 遇到 #error 指令后,实现将显示消息 诊断消息 并使程序格式错误(编译停止)。
2)(1) 相同,但不会影响程序的有效性,编译将继续。

诊断消息 可以包含几个单词,这些单词不一定在引号中。

[编辑] 注释

在 C++23 中标准化之前,许多编译器在所有模式下都提供了 #warning 作为符合扩展。

[编辑] 示例

#if __STDC_HOSTED__ != 1
#   error "Not a hosted implementation"
#endif
 
#if __cplusplus >= 202302L
#   warning "Using #warning as a standard feature"
#endif
 
#include <iostream>
 
int main()
{
    std::cout << "The implementation used is hosted\n";
}

可能的输出

The implementation used is hosted

[编辑] 参考资料

  • C++23 标准 (ISO/IEC 14882:2024)
  • 15.8 错误指令 [cpp.error]
  • C++20 标准 (ISO/IEC 14882:2020)
  • 15.8 错误指令 [cpp.error]
  • C++17 标准 (ISO/IEC 14882:2017)
  • 19.5 错误指令 [cpp.error]
  • C++14 标准 (ISO/IEC 14882:2014)
  • 16.5 错误指令 [cpp.error]
  • C++11 标准 (ISO/IEC 14882:2011)
  • 16.5 错误指令 [cpp.error]
  • C++03 标准 (ISO/IEC 14882:2003)
  • 16.5 错误指令 [cpp.error]
  • C++98 标准 (ISO/IEC 14882:1998)
  • 16.5 错误指令 [cpp.error]

[编辑] 另请参阅

C 文档 针对 诊断指令