名前空間
変種
操作

診断ディレクティブ

From cppreference.com
 
 
C++言語
全般
フロー制御
条件実行文
if
繰り返し文 (ループ)
for
範囲for (C++11)
ジャンプ文
関数
関数宣言
ラムダ式
inline指定子
動的例外仕様 (C++17まで*)
noexcept指定子 (C++11)
例外
名前空間
指定子
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点数
文字 - 文字列 - nullptr (C++11)
ユーザー定義 (C++11)
ユーティリティ
属性 (C++11)
typedef宣言
型エイリアス宣言 (C++11)
キャスト
メモリ確保
クラス
クラス固有の関数プロパティ
explicit (C++11)
static

特殊メンバ関数
テンプレート
その他
 
 

指定されたエラーメッセージを表示し、プログラムを不正な形式にします、またはプログラムの有効性に影響を与えることなく、指定された警告メッセージを表示します(C++23以降)

目次

[編集] 構文

#error 診断メッセージ (1)
#warning 診断メッセージ (2) (C++23から)

[編集] 解説

1) #error ディレクティブに遭遇すると、実装は診断メッセージを表示し、プログラムを不正な形式にします (コンパイルは停止します)。
2) (1) と同様ですが、プログラムの有効性には影響せず、コンパイルは続行されます。

診断メッセージは、必ずしも引用符で囲まれていない複数の単語で構成することができます。

[編集] 注釈

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:2024)
  • 15.8 エラーディレクティブ [cpp.error]
  • C++20 standard (ISO/IEC 14882:2020)
  • 15.8 エラーディレクティブ [cpp.error]
  • C++17 standard (ISO/IEC 14882:2017)
  • 19.5 エラーディレクティブ [cpp.error]
  • C++14 standard (ISO/IEC 14882:2014)
  • 16.5 エラーディレクティブ [cpp.error]
  • C++11 standard (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ドキュメント 診断ディレクティブ
English 日本語 中文(简体) 中文(繁體)