こんにちは、NoMaYです。(すみません。7つに小分けして投稿します。)e2 studioやEclipse/CDTでは、ビルドはエラー無く完了するのに、どういう訳か編集ウィンドウにエラーが表示されてしまうことがあります。今までずっとちょっと腑に落ちなかったのですが、別スレッドでの投稿をきっかけに1週間ほど調べてみて、まとまりの良さそうなところで一区切り付きましたので、分かったことを投稿します。(すみません。後でリンクを追加するかも知れない時にContent Under Reviewとならないよう少しマージンが欲しかったのと、画面コピーが多くて切れ目が分かり難いのとで、7つに小分けして投稿します。)ビルドはエラー無く完了するのに、どういう訳か編集ウィンドウでエラーが表示されてしまうこの症状にはe2 studio(というかEclipse/CDT)のインデクサー(INDEXER)とコード解析(CODAN)という2つの機構が関係している(のは間違いないと思われる)のですが、調べているうちにe2 studio(というかEclipse/CDT)のワークスペースの設定をデフォルトから以下へ変更しておいた方が良さそうだということに気付きました。(理由は4つ後の投稿にて。)ワークスペースの設定では Index all header variants を 有効 にしておいた方が良さそうまた、ワークスペース内に複数のプロジェクトがある場合には、他のプロジェクト、特に品種が異なるマイコンのプロジェクト、すなわちプロジェクト内のiodefine.hが異なるプロジェクト、を閉じておいた方が良さそうだということにも気付きました。(理由は6つ後の投稿にて。)複数のプロジェクトがある場合、品種が異なるマイコンのプロジェクトは閉じておいた方が良さそう更に、3つ後の投稿に書いたeclipse.orgのウェブサイトで見付けた情報からすると、利便性よりも、編集ウィンドウに原因不明のエラーが表示されないようにすることを優先したい場合には、以下の3つは無効にしておいた方が良いかも知れません。(もっとも、無効にしても、自分でメイクファイルを書いたのでなければ利便性はそれほど損なわれない、ような気がします。)無効にしておいた方が良いかも知れないインデクサーオプション:すべてのファイルに索引付け(ビルトもインクルードもなし) (英語表記 Index source files not included in the build)未使用のヘッダーを索引付け (英語表記 Index unused headers)Allow heuristic resolution of includesちなみに、トラブルを解決するヒントを与えてくれるかも知れないものとして、パーサーログファイルというものがあります。これは以下のようにして生成させることが出来ます。resetprg.c.parser.log
Project: rx64m_rsk_audioFile: file:/C:/Renesas/RX/issue_20170918/workspace_e2v600/rx64m_rsk_audio/r_bsp/board/rskrx64m/resetprg.cLanguage: GNU CIndex Version: 206.0Build Configuration: HardwareDebugContext: file:/C:/Renesas/RX/issue_20170918/workspace_e2v600/rx64m_rsk_audio/r_bsp/board/rskrx64m/resetprg.c C, {}Versions in Index: 1 C: {}; 5 macros, 2 includes, 240 names;Include Search Path (option -I): E:\tools\micom\Renesas\CS+\CC\CC-RX\V2.03.00\\include C:\Renesas\RX\issue_20170918\workspace_e2v600\rx64m_rsk_audio\src 。。。途中省略。。。 C:\Renesas\RX\issue_20170918\workspace_e2v600\rx64m_rsk_audio\r_usb_hmsc\src\incMacro definitions (option -D): far= near= _far= _near= __BITRIGHT=1 __CCRX__=1 __DBL8=1 __DOFF=1 __evenaccess= __far= __FPU=1 __INTRINSIC_LIB=1 __LIT=1 __near= __RENESAS_VERSION__=0x02030000 __RENESAS__=1 __RON=1 __RX= __RX600=1 __RXV2=1 __STDC_HOSTED__=1 __STDC_VERSION__=199901L __UBIT=1 __UCHAR=1Macro definitions (from language + headers in index): bool=_Bool brk()=_builtin_brk() BSC=(*(volatile struct st_bsc __evenaccess *)0x81300) BSP_BCLK_HZ=(BSP_SELECTED_CLOCK_HZ / BSP_CFG_BCK_DIV) 。。。途中省略。。。 ___BSP_PRV_IEN(x)=IEN ## xMacro definitions (from files actually parsed): BSP_DECLARE_STACK= FPSW_init=(0x00000000) FPU_DENOM=0x00000100 FPU_ROUND=0x00000000 PSW_init=(0x00010000) PSW_init=(0x00030000)Written on Mon Sep 25 06:16:06 JST 2017
Rulzには、インデクサー(INDEXER)とコード解析(CODAN)に関するスレッドとして、以下のものがありました。日本語情報e2_studioのプリプロセッサ機能についてFITモジュールでコンパイルエラー英語情報E2Studio has issues with semantic errorsFields not resolved, but will compile successfully[関連リンク]Rulz(かふぇルネ)検索: e2studioRulz(本家)フォーラム: e2studio