iP6 Plus を、Linux で動くようにしていました。

GitHub - windy6001/iP6-Plus-Emulator: iP6 Plus

 

WindowsのVS 2019 では普通に動いていた→Macでやると、エラーが出まくったのですが、全部直した→Linuxでやると、エラー、エラー、エラーの嵐。。。汗

 

Macでも、大概、エラーが十個ぐらい出ましたが、さらに上を言ってました。汗

 

というか、同じレギュレーションではないんですね。。

Cのプロトタイプ宣言をちゃんとしてなかったのですが、それでも通ってしまう、VS 2019。というか、私が悪いんですけど。。。汗

 

C99的には、許されないことが多いようです。警告も夥しい数出ていたので、普通に、make すると、コンパイルエラーが発生したことはわかるが、警告に隠れて、エラーの内容が見えないので、make &>log ; grep error log とかやってました。

(他にもいい方法があれば教えてほしいです。)

 

リンカーで、duplicate エラーが大量に出た

#define EXTERN を使う方法により、ダブっているらしい。。

#define EXTERN とは何?

 

.h ファイルに、下記を記述しておく。GLOBALを定義したり、未定義にすることによって、変数宣言 or 参照を選択できるというシステムです。。。が。。

 

これで、よくわからない、重複エラーになってしまってました。便利?なはずが、本末転倒ですよね。。普通に、extern int hoge; か、int hoge; と記述することで解消しました。

 

C言語は、C++と違って、使う変数をほとんど、.h に書いておけないです。グローバル変数が増えてくると、大変です。

今作るなら、C++風味で、なるべくグローバル変数を使わないように作ると思います。。。が....

 

#ifdef GLOBAL

#undef EXTRN

#define EXTRN

#else

#undef EXTRN

#define EXTRN extern

#endif

 

 

 

 

 

 

とはいえ、そろそろ、iP6 Plusを、いじるのは卒業する予定です。(予定は未定)

なぜかというと、オープンソースじゃないんですね。。

まぁ、どうしても拡張したいところがあれば、拡張する可能性はあるかもしれませんが。。あちこち、拡張しようとして、中途半端ではありますが。。。滝汗

 

または、クローズどソースにして、がんばるとか?

しかし、Unix 系で動かない問題があるよな。。。

 

 

ちなみに、Unix/X11で、24bit full color とかで動かすと、画面が簾状になってしまうようです。汗

今のところ、8ビットカラーにするしかないようですが、なぜなんだろう。。。

すいません。。