コンテンツ
質問
『解析エラーが発生した場合』には、「最初に検出されたエラーから順に解消する必要がある」とありますが、下図のように複数のファイルでエラーが表示されています。
最初に検出されたエラーがどれか判断する方法はありますか。
回答
『エラー発生時に解析を中止する』設定をしておき、『解析対象』として登録されているファイルのうち、一つを選択して解析します。
その上で、複数のファイルでエラーが検出されている場合は、解析したファイルからインクルードされる順序を考慮して最初に検出されたエラーを判断します。
インクルードされる順序が簡単に判断できない場合は、『プリプロセス済みファイル』を生成し、一時的にそのプリプロセス済みファイルを解析対象に登録して解析し、最初に検出されたエラーを確認します。
より正確にプリプロセス済みファイルを用いて最初のエラー箇所を判断するには、次のようにします。特にQAC++をお使いの場合は、この方法が有効です。
手順
1.『プリプロセス済みファイル』を生成します。
参考に QAC++ に付属のサンプルコード cgicc.cpp のプリプロセス済みファイルを示します。
Cgicc.cpp.i
2.生成されたプリプロセス済みファイルを、ソースファイル部とヘッダファイル部に分割します。
プリプロセス済みファイルには、オリジナルのファイルパスが出力されています。
オリジナルの解析対象のファイルをソースファイル、それ以外をヘッダファイルとします。
通常、プリプロセス済みファイルの初めにはヘッダファイルが展開され、ソースファイルはプリプロセス済みファイルの最後に展開されています
以下では分割したソースファイルをtest.cpp、ヘッダファイルをtest.hと記します。
3.test.cppの先頭行に #include "test.h" を挿入します。
手順1にあります cgicc.cpp のプリプロセス済みファイルを分割した例を示します。
4.新しいディレクトリを作成し、その中にtest.hを配置します。
5.解析設定ファイル(ACF)の"-i"および"-q"オプションで手順3で作成したディレクトリを指定します。
(『インクルードファイルの検索パスの設定』を参照)
6.一時的にtest.cppを解析対象に登録して解析し、最初に検出されたエラーを確認します。