こんにちは、uchanです。 C++プログラミングをしていて、良く解らない不具合にぶち当たったので、ここに投稿し ます。 以下のプログラムを、osa_dir2で「make run」コンパイルし、実行させてみたところ、例 外(CS:EIP = 0010:00002415)が発生し、止まります。コンパイラは、cc1.exeから cc1plus.exeに、com_mak.txtのCC1を、 CC1 = $(TOOLPATH)cc1plus.exe -I$(INCPATH) $(CC1OPT) -Os -Wall -quiet という風に書き換えることによって変更させて使っています。 なにやら、MyClassクラスのコンストラクタにif文や、for文、do-while文、変数宣言、変 数に値を代入する文などが一定数以上含まれていると、このエラーが発生するようです。 極端な例は、正常に動いていたのに「i = 0;」を書き足すと、このエラーが発生する、な どです。 コンストラクタだからいけないのかなとも思ったので、void test()と言う関数をMyClass の中に作って、そこにコンストラクタの処理内容をすべて移し、fs.test();とやってみて もやはり同じ例外が発生しました。 ちなみに、STACKSIZE = 512k、MALLOCSIZE = 256kとしています。(十分だと思います) どこか、誤っているところがあるのでしょうか。もしかしたらコンパイラがいけないので しょうか。どうかご回答をお願いします。 ----------------------------------hellocp3.cpp---------------------------------- #define AUTO_MALLOC 0 extern "C" { #include <guigui00.h> void OsaskMain(); }; class MyClass { int i; public: MyClass() { if (1 == 1) { if (0 != 0) 0; } if (1 == 1) { if (0 != 0) 0; } i = 0; i = 5; } }; LIB_WINDOW *win; LIB_TEXTBOX *title; void OsaskMain() { lib_init(0); // ウィンドウオープン win = lib_openwindow(AUTO_MALLOC, 0x0200, 8 * 20, 16 * 5); title = lib_opentextbox(0x1000, AUTO_MALLOC, 0, 10, 1, 0, 0, win, 0x00c0, 0); lib_putstring_ASCII(0x0000, 0, 0, title, 0, 0, "hellocp3"); MyClass fs; lib_waitsignal(0x0001, 0, 0); }