よくある質問(FAQ)

IAR クロスコンパイラを使用していますが、解析エラー「CasePlayer2-E-SYN : 名前( ***)が宣言されていません.」が発生しました。

解析エラーの回避策について

質問

IAR クロスコンパイラを使用していますが、解析エラー「CasePlayer2-E-SYN : 名前( *** )が宣言されていません.」や「CasePlayer2-E-SYN : 使用できない文字コードがあり ます.」等のエラーが出ます。この宣言は I/Oポ ート の名称のようです。どのように対処すれば良いですか?

回答

IAR コンパイラ統合開発環境 (Embedded Workbench) に含まれるコンパイラ(ICC‥)を使用している場合、そのソースコードをCasePlayer2で解析す ると下記のような文字コードエラーや未定義エラー が多数発生します。

CasePlayer2-E-SYN : 使用できない文字コードがあります.
CasePlayer2-E-SYN : 宣言が正しくありません.
CasePlayer2-E-SYN : 構文に誤りがあります.
                :
CasePlayer2-E-SYN : 名前( P0 )が宣言されていません.
CasePlayer2-E-SYN : 名前( P0_bit )が宣言されていません.
                :
                :

これは、IARコンパイラでは マイコンの I/Oポートやレジスタの定義を ヘッダファイル (*.h) で定義していますが、その定義が 標準のC言語 (ANSI-C, GNU-C, C99) では規定されていない構文 (@...) を使用している為です。CasePlayer2は 標準のC言語 (ANSI-C, GNU-C, C99) に準拠している為、非標準の記述はエラーとなります。構文(@...)は「Cオプションパラメータ」を使用しても解決できません。 これを回避するためには、CasePlayer2での解析の際に ヘッダファイル (*.h) で定義されている内容を、標準C言語の構文に修正する必要があります。

■ヘッダファイル(ioxxxxx.h)のイメージ

■ 入手したヘッダファイルのパスを設定
「設定」タブ の「プリプロセッサ」を選択して「プリプロセッサの設定」ダイアログを開き、入手したヘッダファイルの保存先フォルダのパスを「システムインクルードパス」又は「ユーザーインクルー ドパス」へ 設定 (変更)してください。