H8/3694からRX130への移行

初めて投稿させて頂きます。

・開発環境:CS+ for CC V8.03.00(YellowIDEからの移行)

現在、H8/3694用に組んだものをCS+にてRX130用プロジェクトに移行し、動作させたいと考えています。

互換性が無い移行のようで、手動で対応できるエラーについてはあらかた対応し終わったのですが、

下記のようなコンパイラ部分?に未定義エラーなどが無数に発生しており、難儀しております。

未定義であるという意味自体は分かるのですが、開発環境のインクルードファイルに発生している原因と対処が分からず、

対応方法などご教示願えれば幸いです。

 

(E) E0520020 C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios(28):E0520020:Identifier "class" is undefined ios 28 Test.mtpj

(E) E0520020 C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios(64):E0520020:Identifier "iostate" is undefined ios 64 Test.mtpj

(E) E0520020 C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios(82):E0520020:Identifier "fmtflags" is undefined ios 82 Test.mtpj

Parents
  • Thermidorさん、こんにちは。NoMaYと申します。

    それらのエラーはC++用ヘッダファイルをCファイルでインクルードしてしまった為に発生しているように思われます。(CC-RXのiosはC++用ヘッダファイルです。)

    (1) iosをインクルードしているファイルはCファイルでしょうか?C++ファイルでしょうか?(インクルードファイルのインクルード関係が巡りめぐって、Cファイルでiosがインクルードされているのではないかと予想したのですが、どうでしょうか?)

    (2) インクルードしているファイルがCファイルだった場合、YellowIDE&Yellow C(?)の場合でも、同様にCファイルからC++ヘッダファイルのiosがインクルードされていたでしょうか?

    (3) 上記の(2)は、元々はそうではないだろうな、と思うのですが、今回、そうなってしまった原因として、条件コンパイルの条件を合わせ込みきれずにインクルードされてしまったのではないかと思うのです。上記の(2)がそうではなかったのであれば、この点を見直してみてはどうでしょうか?

    (4) もし、もともとの環境で、CファイルからC++ヘッダファイルである筈のiosがインクルードされていたのであれば、もともとの環境でのiosの内容はどのようなものでしたでしょうか?ひょっとして中身が空のファイルだったりとかしないでしょうか?

Reply
  • Thermidorさん、こんにちは。NoMaYと申します。

    それらのエラーはC++用ヘッダファイルをCファイルでインクルードしてしまった為に発生しているように思われます。(CC-RXのiosはC++用ヘッダファイルです。)

    (1) iosをインクルードしているファイルはCファイルでしょうか?C++ファイルでしょうか?(インクルードファイルのインクルード関係が巡りめぐって、Cファイルでiosがインクルードされているのではないかと予想したのですが、どうでしょうか?)

    (2) インクルードしているファイルがCファイルだった場合、YellowIDE&Yellow C(?)の場合でも、同様にCファイルからC++ヘッダファイルのiosがインクルードされていたでしょうか?

    (3) 上記の(2)は、元々はそうではないだろうな、と思うのですが、今回、そうなってしまった原因として、条件コンパイルの条件を合わせ込みきれずにインクルードされてしまったのではないかと思うのです。上記の(2)がそうではなかったのであれば、この点を見直してみてはどうでしょうか?

    (4) もし、もともとの環境で、CファイルからC++ヘッダファイルである筈のiosがインクルードされていたのであれば、もともとの環境でのiosの内容はどのようなものでしたでしょうか?ひょっとして中身が空のファイルだったりとかしないでしょうか?

Children
  • NoMaY様、お返事ありがとうございます!
    ご確認が遅くなり、大変申し訳ございません。

    早速これら項目について確認させて頂きます!
  • 大変遅くなり申し訳ございません。

    非常に初歩的な事項で申し訳ありませんが、iosファイルというのは下記ファイルのことでしょうか。
    C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios
    (エラー発生時にタブに表れましたが、特にこれをインクルードするようソースを書き換えたことはありません)

    もしiostreamのことであれば、Cファイルから<iostream>としてインクルードされていました。
    これをコメントアウトしてみたところ、今度は0b0101~のように2進数で計算を行っている箇所すべてに;や}が抜けている旨のエラーが発生しました。
  • 調査したところ、CS+では2進数表記をサポートしていないのですね。
    これらをすべて10進数や16進数に変更し、iostreamをインクルードから外せば通る可能性があるのでしょうか。