2013-10-29 12 views
7

静的な分岐と特性と、もう一方にはコントラクト・プログラミング機能があります。適切なメッセージを伝えるという主張の特徴のために、契約は素晴らしいものです。また、静的検査では、コンパイルされたコードにオーバーヘッドが発生しません。当然のことながら、コンパイル時に適切なエラーメッセージを出す機能を持たせると非常に役に立ちます。Dに静的なプリントがありますか?

たとえば、私の機能を持つベクトルとディファレンシャル1形式のクロス積を得ようとすると、コンパイラがどのように見えるのかということではなく、構造と配列の面であるいは関数の引数の型を静的に絞り込むことはできますが、ユーザーは私のものではなくコンパイラのメッセージに対処する必要があります。

コンパイル時にカスタムメッセージを印刷する方法はありますか?

答えて

9

はい、あなたはいくつかの方法を使用してカスタムメッセージを発することができます。

  1. pragma(msg, message)message式を評価し、コンパイル時に結果を出力します。
  2. static assert(expression, message)コンパイル時に評価されるexpressionがfalseの場合、コンパイルは中止されます。これは、C #errorプリプロセッサディレクティブのD相当品です。
  3. CTFE(コンパイル時関数実行)中に、キャッチされない例外とアサートの失敗はコンパイル時エラーとして機能し、添付されたメッセージも出力します。
  4. deprecatedキーワードに説明メッセージが表示されるようになりました。
  5. 現在、CTFEの解釈中に評価された式を印刷する方法はありませんが、ctfeWritelnはCTFEの解釈中に動作するwritelnの変形として提案されています。
関連する問題