跳到主要内容

诊断指令

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

语法

1#error
diagnostic-message
2#warning
diagnostic-message (自 C++23 起)

解释

  1. 遇到 #error 指令后,实现会显示消息 diagnostic-message 并使程序格式错误(编译停止)。
  2. (1)相同,但程序的有效性不受影响,编译会继续。
    diagnostic-message 可以包含几个不一定用引号括起来的单词。

备注

在 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:2023)
    • 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++23 起)

语法

1#error
diagnostic-message
2#warning
diagnostic-message (自 C++23 起)

解释

  1. 遇到 #error 指令后,实现会显示消息 diagnostic-message 并使程序格式错误(编译停止)。
  2. (1)相同,但程序的有效性不受影响,编译会继续。
    diagnostic-message 可以包含几个不一定用引号括起来的单词。

备注

在 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:2023)
    • 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]