2022/2/2
2022/2/28
製品
DT+Trace, DT10, DT-Win
カテゴリー
How-to
タグ
テストポイント
1522 Views
特定のプリプロセッサをテストポイント自動挿入の対象から除外する。
テストポイント自動挿入の解析に失敗する場合(コメント領域以外でマルチバイトコードが出現する場合など)やデバッグコードなど、テストポイント自動挿入の対象から除外したい区間が存在する場合があります。
しかし、通常の自動挿入では、ヘッダファイルを認識しないため、プリプロセッサ処理で無効になっている箇所に対しても、テストポイントを挿入します。
プリプロセッサを考慮した上で、テストポイントを挿入するには、次の2つの方法があります。
条件付きコンパイル解析を用いる方法
条件付きコンパイル解析を行うには、プロジェクトに登録されているソースファイルがIncludeしているパスを、プロジェクトに設定する必要があります。
- メニューから[ファイル]→[プロジェクト設定]を選択します。
または、[フォルダビュー]からソースファイルを選択し、右クリックから[プロパティエディタ]を選択します。
- [プロジェクト設定]ダイアログまたは[プロパティエディタ]ダイアログの[条件付きコンパイル解析]ページを開き、次の設定を行います。
– [条件付きコンパイルの解析を行う] : True
– [インクルードパス] : ソースファイルがIncludeしているヘッダファイルやフォルダパスの環境変数を設定します。
- テストポイント自動挿入を行うとIncludeファイルの内部を解析し、定義に従って自動挿入が行われます。
本来であれば、すべてのヘッダファイルのパスを指定する必要があります。
#if 0~やプリプロセッサの定義ヘッダファイルだけを設定する場合であれば、最低限下記の設定を行います。
- [インクルードファイルの検索失敗時、自動挿入を中止する] : False
- [#error を通知する] : 検出箇所を通知して処理を続行する
無効コード定義ファイルを用いる方法
Includeするフォルダやファイルが多く、設定が大変な場合は、こちらの方法をご利用ください。
無効コード定義ファイルに、指定した文字列を含む #if や #ifdef を定義することで、対応する #endif までの区間をテストポイント自動挿入の対象から除外します。
例
通常、次のコードに対し、テストポイント自動挿入を行うと、#ifdef FOR_DOCUMENT の区間もテストポイント自動挿入の対象となますが、コメント領域以外でマルチバイトコードを含むため、エラーになってしまいます。
#if 0
#define FOR_DOCUMENT /* このオプションを有効にするとエラーにドキュメントが吐かれる */
#endif
/* 関数実体定義 ——————–*/
#ifdef FOR_DOCUMENT
関数名 func_a
機能 サンプル用コード
引数 int arg_a
戻り値 void
変更履歴 2009.4.1
#endif
...
- 無効コード定義ファイル(*.txt)に、テストポイント自動挿入の対象から外したいコンパイルオプションを記入します。
– 複数のコンパイルオプションを指定したい場合、1行づつ列挙してください。#ifdef FOR_DOCUMENT ... ...
- DTシリーズの[プロジェクト設定]ダイアログの[共通]ページから[無効コード定義ファイル]に1のファイルを指定します。
- テストポイント自動挿入を行うと、1のファイルに記述された区間はテストポイント自動挿入の対象外になります。