IAR クロスコンパイラを使用していますが、解析エラー「CasePlayer2-E-SYN : 名前( *** )が宣言されていません.」や「CasePlayer2-E-SYN : 使用できない文字コードがあり ます.」等のエラーが出ます。この宣言は I/Oポ ート の名称のようです。どのように対処すれば良いですか?
よくある質問(FAQ)
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言語の構文に修正する必要があります。
__saddr __no_init volatile union { unsigned char P0; __BITS8 P0_bit; } @ 0xFFF00;
※「__saddr」「__no_init」は「Cオプションパラメータ」の設定でエラー回避できますが、「@ 0xXXXXX」は 修正する必要があります。
ガイオでは、ユーザーが使用している「ヘッダファイル(ioxxxxx.h)」から、その内容を修正したヘッダファイルを作成するサポートを行っています。 ユーザーサポート宛に、「ヘッダファイル(ioxxxxx.h)」をお送り頂ければ ヘッダファイルを作成し返送させて頂きます。ご希望の場合は「ユーザサポート」へお問い合わせ下さい。
■ 入手したヘッダファイルのパスを設定
「設定」タブ の「プリプロセッサ」を選択して「プリプロセッサの設定」ダイアログを開き、入手したヘッダファイルの保存先フォルダのパスを「システムインクルードパス」又は「ユーザーインクルー ドパス」へ 設定 (変更)してください。