2014/07/05

CDTのIndexer

あまりeclipseを使わないから、と前置きしておこう。

S110のサンプルプロジェクトをCDTで展開すると、main.cにいっぱいエラーマークが表示された。
どうやら、Includeパスとかで見つけられなかったAPIやマクロにマークがついているようだ。
Makefileでは解決できているので問題はないのだけど、エラーマークが出ているのは精神的によろしくない。
チェックを外せばいいんだけど、せっかくなのでチェックしたままエラーをなくそうとした。

まず、プロジェクトプロパティでパスを設定。
nRF51822へのパスは、プロジェクト相対でだいたいあってるのだが、GCCのパスが絶対になっていて、私はそこに置いていなかったためエラーになっていた。
それは、設定すればよし。
nRF51822のパスでも、いくつか設定されていないものがあったので、それも追加すれば良い。

それでも、2つほどエラーが残った。
マクロのところだったからincludeが足りないのかと思ったがそうではなく、マクロが参照している関数が見つからないようだった。
その関数のプロトタイプ宣言をマクロの前に追加すれば、エラーは消える。

 

消えるんだけど、これはIndexerの限界なんだろう、と思った。
というのも、関数の定義はマクロの後にちゃんとあるからだ。
ビルド時の処理の流れだと、プリプロセスの展開→ビルド、となるので、マクロも展開されるけど、includeも展開されるので、ヘッダファイル内でマクロの後に関数定義があっても問題がない。
でも、たぶんIndexerはincludeの展開は直接行わないのか、あるいは展開処理の順序があまりうまくいっていないとかじゃないのかね。

そういう意味では、わざわざライブラリのヘッダを変更してまでエラーを取ってやらなくてもいいんじゃないか、と思わなくもない。
たぶん、次にやるときは、もったいないけどエラーチェックを外すだろうな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。