スキータイム計測機 開発日誌

とある大学生の競技スキー用タイム計測機の開発日誌です。とかいいつつ関係ないことも書きます。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C18で type mismatch in redeclaration of...

C18コンパイラでPIC18Fを使ったプログラムを書いているとき、コンパイルした際に


type mismatch in redeclaration of '(なんとか)'


というエラーが出てくる時があります。
直訳すると「(なんとか)の再宣言で型が不一致です」ということですが、関数や変数などで心当たりがない場合があります。
私もこのエラーがでてしばらく悩んだのですが、よくよくソースを見てみると、複数ソースで別のPICのヘッダを読み込んでいるのが原因でした。
ちょっと見れば簡単に気づきそうなエラーですがC18のコンパイルエラーの文はあまり関係ないことが書いてあることも多いので、メインのソースに気を取られてなかなか気づかない場合があります。
別のプロジェクトで使ったソースを流用する場合なんかは注意するといいと思います。


このような面白くないエラーを解決するには、もし複数ソースでどうしても使用するPICのヘッダが必要な場合
<p18cxxx.h>をインクルードすると簡単です。
このヘッダはMPLABのCongifure→Select Deviceで選択されるPICのヘッダを自動でインクルードしてくれるので便利です。
一応どのPICを使っているのかわかるようにしたいので、私はメインのソースには直接使用するPICのヘッダをインクルードし、その他のソースにはこの<p18cxxx.h>をインクルードして書いています。
スポンサーサイト

コメント

>type mismatch in redeclaration of '(なんとか)'
ちょうど同じ問題で悩んでました.
かなめさんの記事のおかげでサクサクっと解決できました.
ありがとうございますm(_ _)m

  • 2013/02/15(金) 21:52:42 |
  • URL |
  • 通りすがり #-
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://elecski.blog106.fc2.com/tb.php/27-4dabd27e
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。