Namespaces
Variants

Diagnostic directives

From cppreference.net

显示给定的错误信息并使程序成为病式 ,或显示给定的警告信息但不影响程序的有效性 (since C23)

目录

语法

#error 诊断信息 (1)
#warning 诊断信息 (2) (C23起)

说明

1) 遇到 #error 指令后,实现会显示消息 diagnostic-message 并使程序变为非良构(编译停止)。
2) (1) 相同,区别在于程序的正确性不受影响,且编译过程将继续进行。

diagnostic-message 可由多个单词组成,且不一定需要引号包围。

注释

在 C23 标准化之前, #warning 已被许多编译器在所有模式下作为符合规范的扩展提供。

示例

#if __STDC__ != 1
#  error "Not a standard compliant compiler"
#endif
#if __STDC_VERSION__ >= 202311L
#  warning "Using #warning as a standard feature"
#endif
#include <stdio.h>
int main (void)
{
    printf("The compiler used conforms to the ISO C Standard !!");
}

可能的输出:

The compiler used conforms to the ISO C Standard !!

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 6.10.5 错误指令 (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 6.10.5 错误指令 (p: 126-127)
  • C11 标准 (ISO/IEC 9899:2011):
  • 6.10.5 错误指令 (p: 174)
  • C99标准(ISO/IEC 9899:1999):
  • 6.10.5 错误指令(页码:159)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 3.8.5 错误指令

参见

C++ 文档 关于 诊断指令