命名空间
变体
操作

诊断指令

来自 cppreference.cn

显示给定的错误消息,并将程序呈现为不合规的形式,或显示给定的警告消息,而不影响程序的有效性(自 C23 起)

目录

[编辑] 语法

#error diagnostic-message (1)
#warning diagnostic-message (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 错误指令 (p: 159)
  • C89/C90 标准 (ISO/IEC 9899:1990)
  • 3.8.5 错误指令

[编辑] 参见

C++ 文档 关于 诊断指令