
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
PSoC Creator での GCC ウォーニング診断設定 - KBA225431- Community Translated (JA)
Community Translated by MoTa_728816 Version: **
質問: PSoC Creator™ で GCC のウォーニングはどのように診断設定できるのですか?
回答:
PSoC Creator はコードのエラーやウォーニング診断に GCC コンパイラを使用して結果を Notice List に表示します。GCC は診断対象種ごとにその診断を有効または無効にすることを許しますので診断対象の設定を変更することが可能です。ウォーニング対象の設定は:
- コンパイラのコマンドラインオプション
- pragma による診断設定
手法 1: コンパイラのコマンドラインオプションを使用する
コマンドラインはカスタムフラグを使用して実行時のウォーニング対象を設定します。カスタムフラグの一覧は こちら. をご参照ください。
この方法はグローバル設定でコード全体に反映されます。図 1 のようにカスタムフラグを Build Settings に追加してください。
図 1. カスタムフラグを追加する
手法 2: pragma を使用した GCC の診断設定
pragma は診断の種類を変更するのに使用されます。診断設定用 pragma の詳細は こちら をご参照ください。この手法はグローバル設定も行えますが、主にコードの特定部位の診断設定に使用されます。pragma 指示子は下記のようにコードに直接追加されます:
書式:
#pragma GCC diagnostic <kind> <option>
ここで、
<kind> は error, warning, ignore のどれか
<option> はコマンドラインオプションに相当する文字列
使用例:
#pragma GCC diagnostic ignored “-Wunused-variable” //これで使用していない変数に関するウォーニングは無視されるようになります
よくある質問 (FAQ) :
出力ウィンドウや Notice List に表示されているウォーニングを無効にするのにはどうしたら良いですか?
Build Settings の Compiler > Command Line 内の Custom Flags のフィールドにカスタムフラグ “-w” をお使いください。
コードの特定部位に診断を適用するにはどうしたら良いですか?
pragma は診断対象部分の先頭と最後を指定するのに push と pop オプションを提供しています。
使用例:
#pragma GCC diagnostic push // 1行目
#pragma GCC diagnostic ignored “-Wunused-variable”// 2行目
#pragma GCC diagnostic pop // 20行目
この例ではコードの3行目から20行目までの間に使用されていない変数があっても無視されてウォーニングは発行されません。同様に、例のコード中の ignored を error に変更するとコードのその部分のエラーは無視されるようになります。
pragma の書式で option フィールドには何を記載したら良いのですか?
PSoC Creator でコードをコンパイルすると、全てのウォーニングには pragma オプションも合わせて表示されます。
図 2. pragma オプション
赤枠でハイライトされた部分が pragma オプションです。
ウォーニングを全てエラーとして表示するのにはどうしたら良いですか?
Build Settings 中で "-Werror" フラグを使用してください。
ある特定のウォーニング、例えば unused variable をエラーとするのにはどうしたら良いですか?
もしコマンドラインオプションを使用しているのであれば、“-Werror=unused-varibale” フラグを Build Settings の中で使用してください。
もし GCC の pragma を使用しているのであれば、下記の行を使用してください:
#pragma GCC diagnostic error “-Wunused-variable”
どちらの手法がより高い優先度を持ちますか?
どちらの手法にも診断の優先度が適用されます; ignore > warning > error 。その為、優先度の高い設定を持つ手法の設定が適用されます。
ウォーニングを無効にした上で Notice List に転送するにはどうしたら良いですか?
PSoC Creator はコンパイラの出力を監視して正規表現を使用してツールチェーン出力からエラーやウォーニングを検出するシステムを持っています。しかし新しい書式 (例えば、#pragma 診断設定) を検出できるシステムはありませんので、Notice List にそれらの情報表示をすることはできません。