RL78 CS+forCA,CXコンパイラ

コード生成にて、コードが自動的に作られ、その後、以前使用していたCのソースファイルを追加しました。

追加したシース内で、DI();やEI();を使うため、#include "r_cg_macrodriver.h"を追加しましたが、

(E) E0802 r_cg_macrodriver.h(34) : CC78K0R error E0802: Illegal preprocess directive r_cg_macrodriver.h 34 AAA.mtpj

というエラーが出ます。

解決方法はありますか?

  • チョコです。

    r_cg_macrodriver.hの34行目に#pragmaなど記述されて

    いるかと思いますが、それより前に命令が記述されていない

    でしょうか。

    r_cg_macrodriver.h自体が問題ない場合でもそれより前で

    includeしたヘッダにそのような記述があると、このような

    エラーが出る可能性があるので、includeの順番を入れ替える

    等することも考えられます。

  • 私も今勉強中ですが、サンプルプログラムに"r_cg_macrodriver.h"の以下の2つのバージョンがありました。。

    Creation Date:2015/08/27 (#pragma記述なし)

    Creation date:2016/11/07 (#pragma記述あり)

    2015/08/27と同一プロジェクトのファイルの一部を2016/11/07以降のプロジェクトに組み込もうとしたときにE0802のエラーが発生しました。

    includeの順番を入れ替えて解決しました。

    特に"r_cg_macrodriver.h"が他のヘッダーファイルにincludeされているときは注意が必要ですね。