みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

HEWを使用しているのですが、このようなエラーが出ました。

HEWを使用しているのですが、このようなエラーが出ました。
C:\Hiae_7751RTE\Product\T-Kernel\sh7751R\include\queue.h(28) : C2500 (E) Illegal token "void"
C:\Hiae_7751RTE\Product\T-Kernel\sh7751R\include\queue.h(29) : C2500 (E) Illegal token "{"

最初はコンパイルエラーもリンクエラーもなかったのですが、intprg.c、resetprg.cを消した(この時点でもエラーはなし)のでstacksct.hを別のソースファイルからインクルードさせてみたら上のようなエラーが出ました。エラーが出たのでstacksct.hをインクルードさせるのもやめてみましたがエラーは消えません。
新しくプロジェクトを作ってみましたがダメでした。
また、queue.hは書き換えていません。
なぜ関係のないqueue.hにエラーがでたのでしょうか?

queue.hのエラーが出た行です↓
----------------------------------
Inline void QueInit( QUEUE *que )
{
----------------------------------

投稿日時 - 2010-04-27 17:43:22

QNo.5855330

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

HEW は使ったことないですが、プリプロセッサ出力を見れば、原因が分かると思いますよ。

↓マニュアル
http://documentation.renesas.com/jpn/products/tool/j702248_superh.pdf

のp11に「preprocessor=ファイル名」とすればプリプロセッサ出力を書き出せるようなので、出力ファイルをエディタで開いて

1) queue.h を検索
2) QueInit( を検索
 Inline void QueInit() がどう展開されているか調べる。
3) 正しければ、その位置から上方向にさかのぼって、あやしそうなところを見つける。
4) 見つからない場合は、「2)」の QueInit() の行を含む、それより前(上)の数行 [*1] をコピーして、例えば「test00.c」のような適当なファイルに保存。
5) 「4)」のファイルを普通にコンパイルする。
 エラーになるはずなので、ソースをじっくり調査する。

 [*1] 空行(何もコードのない行)を除いて、関数プロトタイプ宣言とか外部変数宣言とかを数行、の意。


まぁ、「Inline」が怪しそうですが…

投稿日時 - 2010-05-03 02:58:36

ANo.1

ルネサスには問い合わせてみましたか?
あと、プロジェクトファイルをバックアップしていないのでしょうか?
変更前の状態のプロジェクトを持たずに、変更してしまってエラーが出ても、後の祭りですよ。
変な現象が山ほど出ます。
改造する直前に、動作しているプロジェクトは必ず、番号をつけて注記を書いて(テキストでいい)
圧縮するなりして保存しておかなければ、後戻りできなくなった時点でお手上げです。

投稿日時 - 2010-04-29 23:20:13

あなたにオススメの質問