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ビットカラーにするしかないようですが、なぜなんだろう。。。
すいません。。