诊断指令

出自cppreference.com


顯示給定的錯誤消息並使得程序非良構,或給定的警告消息而不影響程序的合法性(C23 起)

語法

#error 診斷消息 (1)
#warning 診斷消息 (2) (C23 起)

解釋

1) 實現在遇到 #error 指令後,顯示消息 診斷消息,並令程序非良構(停止編譯)。
2)(1),但不影響程序的合法性並且編譯繼續。

診斷消息 可由多個詞組成,不必在引號中。

註解

在其於 C23 的標準化前,#warning 已經被許多編譯器作為遵從的擴展提供。

示例

#if __STDC__ != 1
#  error "不是遵从标准的编译器"
#endif

#if __STDC_VERSION__ >= 202311L
#  warning "使用标准功能特性 #warning"
#endif

#include <stdio.h>
int main (void)
{
    printf("所用编译器遵从 ISO C 标准!!");
}

可能的輸出:

所用编译器遵从 ISO C 标准!!

引用

  • C23 標準(ISO/IEC 9899:2024):
  • 6.10.5 Error directive (第 TBD 頁)
  • C17 標準(ISO/IEC 9899:2018):
  • 6.10.5 Error directive (第 126-127 頁)
  • C11 標準(ISO/IEC 9899:2011):
  • 6.10.5 Error directive (第 174 頁)
  • C99 標準(ISO/IEC 9899:1999):
  • 6.10.5 Error directive (第 159 頁)
  • C89/C90 標準(ISO/IEC 9899:1990):
  • 3.8.5 Error directive

參閱

診斷指令C++ 文檔