LCC Win32 1998.Oct.20  いつのまにか.ZIPではなく、インストールシールドによる自己展開ファイルに  なってますね。で、こいつ、.ZIPな奴と使うレジストリ位置が違います。  しかし、個人的にはサンプル削ってどーすんじゃいとか思うんだけどなぁ。  せっかく積極的に新しい機能に適合した*.Hとか*.LIBとか付けても、サンプルや  デモがないと見くびられるだけだと思うけど。  とりあえず手持ちの.ZIP版の最新に現在使用中のLCCを合わせることとしました。  .ZIP展開後、おもむろにWinDiff (*1)を起動して違っているファイルを上書きして  行く...(注意。以下wizard関係は無視してます)  変更: readme,lcc.exe, lcclnk.exe, lrc.exe, make.exe, wedit.exe, wedit.hlp weditres.exe mmsystem.h, stdlib.h, time.h, win.h crtdll.lib, ws2_32.lib, kernel32.lib  新規: winsnmp.h  むぅ。*.exp (このファイルから*.libを作る)の様子からだと、   user32.lib, rasapi32.libが変更、rtm.lib, crypt32.lib, msvfw.libが追加、  とならないとおかしいのだが?  よし分かった。makefileと該当の*.expを取り出し、makeっと。  これはこれでよしとして次。手持ちで最新の.ZIP版と.EXE版を比較...  おおむね.EXE版の方が新しいしファイルが増えてもいるのは当然なのだが、  逆のパタンもある。気に食わない。特にタイムスタンプが逆転(つまり.ZIP版の  方が新しい)のもある。大いに気に食わない。  使うレジストリ位置が違うということもあり、.ZIP版と.EXE版を混ぜるのは  止した方が良いと心の中の何かが強くリコメンドしている。ここまでとしよう。  ...という訳で当方は.ZIP版のlccをしばらく使うことにしましたとさ(^^;。 (*1) SDK付属のツール。サブフォルダを含めて同じか違うかを比較してくれます。  (他の比較モードもあります)ただ、フォルダ毎の比較モードの時はタイムスタンプ  しか見てくれない気もしますが、まぁよしとしましょう。  fc a:*.* c:*.*っちゅう手もいざとなればあることだし(でもこっちはこっちで、  サブディレクトリ、見てくんないと思ったけど) ======================================================================= 1998.Oct.31追記。  LCC-Win32で最適化に伴うバグと思われる現象に遭遇しました。  最適化しないと何も問題ないのですが、それは次のようなものです。 === Source === #include int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { BOOL bWait; bWait = (lstrlen(lpCmdLine) == 0); if (bWait) MessageBox(NULL, "T", "", 0); if (!bWait) MessageBox(NULL, "T", "", 0); else MessageBox(NULL, "F", "", 0); return 0; } /* EOF */ ===  見ればお分かりのように、「T」というメッセージボックスは必ず出るはずです。 ところがぎっちょん。出なかったんです。 (いきなり「F」なメッセージボックスが出る)  最適化と、アセンブラソース出力を指定してコンパイルします。 C:\lcc\bin> lcc -O -S foo.c  結果を抜粋してコメントを入れると次のようになりました。 === Part of .ASM === .line 5 .line 8 pushl 16(%ebp) call _lstrlenA@4 xorl %edi,%edi ; init bWait or %eax,%eax ; test lstrlen() result, 0 xchgl %edi,%eax sete %al ; set bWait 0 or 1 (no flags change) xchgl %eax,%edi .line 9 je _$80 ; ここが変。jneだったらOKなのだが pushl $0 pushl $_$83 pushl $_$82 pushl $0 call _MessageBoxA@16 _$80: .line 10 === 試したのは手持ちの最新、自己解凍バージョン、V2.5: lcc.exe 374,816 byte, 1998 Oct. 05 15:37 だけど昔の奴でも同様。というか昔の奴を使っていて挙動がおかしいので、 最新版で再確認してみたらやっぱり変だった、というのが真相。 (以前に書いたように、私自身は古いlccで満足してましたからこの問題を見付ける までは手持ちの最新版を使うつもりは全くありませんでした。でも、不具合報告を 書く以上は、最新版で試さないと作者に失礼ですから……)                            − 以上 −