Diagnostic directives
From cppreference.net
<
c
|
preprocessor
显示给定的错误信息并使程序成为病式 ,或显示给定的警告信息但不影响程序的有效性 (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++ 文档
关于
诊断指令
|