/*	
 *	clipstd.h
 *
 *	標準ヘッダファイルをインクルードします。
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2017 Naoyuki Sawa
 *
 *	* Fri Nov 30 15:49:54 JST 2001 Naoyuki Sawa
 *	- 作成開始。
 *	* Thu Dec  6 22:01:32 JST 2001 Naoyuki Sawa
 *	- 1stリリース。
 *	* Thu May 30 06:09:50 JST 2002 Naoyuki Sawa
 *	- s1c33cpu.hとc33208.hのインクルードを追加。
 *	* Thu Jul  4 18:19:00 JST 2002 Naoyuki Sawa
 *	- #include "c33208.h" を "c33209.h" に変更。
 *	- c33209.hは、オリジナルのc33208.hを基に、修正を加えたものです。
 *	  c33208.hはもう使いませんが、keepフォルダに残してありますので、
 *	  c33208.hとc33209.hを比較して、変更か所を確認してください。
 *	* Fri Jul  5 20:05:00 JST 2002 Naoyuki Sawa
 *	- plc_IOの定義をc33209.hに移しました。
 *	* Sat Sep  7 21:39:00 JST 2002 Naoyuki Sawa
 *	- Simpleライブラリのプロジェクトからもclipstd.hを利用するために、
 *	  NOZLIBシンボルを定義するとzlib.hをincludeしないようにしました。
 *	  NOGSM シンボルを定義するとgsm.h をincludeしないようにしました。
 *	  ->Sat Oct 12 06:24:00 やっぱりNOZLIB,NOGSMは削除。
 *	    他のプロジェクトで使うときは、編集してください。
 *	* Mon Nov 26 00:47:00 JST 2002 Naoyuki Sawa
 *	- zlib/unzip.hを追加しました。
 *	  詳しくは、zlib/Makefileの2002/11/26日付コメントを参照してください。
 *	* Sun Mar 23 05:53:00 JST 2003 Naoyuki Sawa
 *	- S1C33 Family C Compiler Packageのpow()バグ回避方法を変更。
 *	  これまではマクロで置き換えていましたが、関数の再定義に変更しました。
 *	  マクロでもいいのですが、関数再定義の方が安全な気がしたので…
 *	  pow()の再定義は、他の関数の再定義と同じく、clippce.cで行っています。
 *	* Tue May 20 06:00:00 JST 2003 Naoyuki Sawa
 *	- 浮動小数点数対応のsprintf()/vsprintf()を作ったので、（→clipprnt.c）
 *	  これらの関数がカーネル呼び出しになってしまわないよう、
 *	  #include <piece.h> より先に #define NOPCESPRINTF を定義しました。
 *	* Wed Jan 04 04:16:00 JST 2006 Naoyuki Sawa
 *	- Win32アプリケーション用の、メモリリーク追跡の定義を追加しました。
 *	  メモリリーク追跡を行うには、main()の最初にDEBUG_INIT()を呼び出してください。
 *	* Thu Jan 05 02:51:00 JST 2006 Naoyuki Sawa
 *	- Win32環境でよく使う、assert.h、io.h等を、ここで読み込むよう追加しました。
 *	  これまでは、それぞれのWin32アプリケーションが、個別に読み込んでいました。
 *	* Thu Mar 23 19:55:00 JST 2006 Naoyuki Sawa
 *	- #include <setjmp.h> を追加しました。
 *	* Thu Jun 08 07:45:00 JST 2006 Naoyuki Sawa
 *	- EPSONライブラリのlimits.hは問題があり、INT_MINを使うと以下のような警告が表示されます。
 *		warning: decimal constant is so large that it is unsigned
 *	  警告を回避するために、INT_MINを再定義しました。(LONG_MINについても同様です。)
 *	  コンパイル時の警告の有無だけの違いであり、生成されるバイナリに変化はありません。
 *	  ややトリッキーですが、INT_MINをこのように定義して警告を回避するのは、C言語の定石です。
 *	* Sat Jun 17 04:53:39 JST 2006 Naoyuki Sawa
 *	- stddef.hとstdlib.hのwchar_t定義衝突を回避し、stddef.hのincludeを有効に戻しました。
 *	* Tue Jun 27 06:49:04 JST 2006 Naoyuki Sawa
 *	- Expatのヘッダファイル(expat/expat.h)インクルードを追加しました。
 *	* Wed Jun 28 05:09:19 JST 2006 Naoyuki Sawa
 *	- Visual C++ 6.0のC言語では、inlineが使えないので、__inlineへの置き換えを定義しました。
 *	  Win32でclipfix.hを利用するときに、プロジェクト毎の置き換え定義が不要になりました。
 *	* Thu Jul 20 06:10:41 JST 2006 Naoyuki Sawa
 *	- assert.hを、P/ECE環境とWin32環境共通でインクルードするよう変更しました。
 *	  これまでは、P/ECE環境にassert.hは存在せず、Win32環境でのみインクルードしていました。
 *	  今回、P/ECE環境のために、include/assert.hを作成しました。
 *	  P/ECE環境では、include/assert.hがインクルードされます。
 *	  CLiPには既にASSERTが存在するので、assert.hは単にassertをASSERTに置き換えるだけです。
 *	- 以上のように変更した理由は、次のとおりです。
 *	  既存のライブラリ等をP/ECEで利用する場合に、ライブラリがassert()を利用していることが多いです。
 *	  これまでは、「#include <assert.h>」をコメントアウトし、assert()をASSERT()に変更していました。
 *	  毎回このような作業を行うよりも、assert.hとassert()を提供する方が早いと判断しました。
 *	* Tue Nov 22 01:13:37 JST 2011 Naoyuki Sawa
 *	- /usr/PIECE/include/limits.h を /clip/include/limits.h にコピーし、直接修正することにしました。
 *	  INT_MINとLONG_MINを再定義して修正する方法をやめ、当該箇所をコメントアウトしました。
 *	  /clip/include/limits.h のコメントを参照してください。
 *	* Tue Nov 22 02:15:06 JST 2011 Naoyuki Sawa
 *	- /usr/PIECE/include/stdarg.h を /clip/include/stdarg.h にコピーし、smcvals.hをインクルードするようにしました。
 *	  ただし、clipstd.hの中のsmcvals.hのインクルードも、そのまま残してあります。
 *	  /clip/include/stdarg.h のコメントを参照してください。
 *	* Tue Nov 22 02:39:29 JST 2011 Naoyuki Sawa
 *	- /usr/PIECE/include/stddef.h を /clip/include/stddef.h にコピーし、直接修正することにしました。
 *	  この変更に伴い、clipstd.hで_WCHAR_Tを定義することは不要になったため、clipstd.hの当該箇所をコメントアウトしました。
 *	  /clip/include/stddef.h のコメントを参照してください。
 *	* Tue Nov 22 02:52:56 JST 2011 Naoyuki Sawa
 *	- Luaのヘッダファイル(liblua/lua.h,liblua/lauxlib.h,liblua/lualib.h)インクルードを追加しました。
 *	* Tue Oct 16 11:50:08 JST 2012 Naoyuki Sawa
 *	- alloca.h のインクルードを追加しました。
 *	* Fri Nov 30 14:17:48 JST 2012 Naoyuki Sawa
 *	- Visual C++ 6.0 で、dirent.h,fnmatch.h,stdint.h,alloca.h をインクルードしないよう除外しました。
 *	* Sun Mar 10 19:53:04 JST 2013 Naoyuki Sawa
 *	- getopt.h のインクルードを追加しました。
 *	* Sat Mar 23 17:48:56 JST 2013 Naoyuki Sawa
 *	- sys/stat.h、sys/types.h のインクルードを追加しました。
 *	* Tue Dec 03 23:45:04 JST 2013 Naoyuki Sawa
 *	- X11/keysym.h のインクルードを追加しました。
 *	* Mon Jan 13 19:05:18 JST 2014 Naoyuki Sawa
 *	- search.h のインクルードを追加しました。
 *	* Mon Mar 10 17:00:24 JST 2014 Naoyuki Sawa
 *	- /usr/PIECE/include/stdio.h を /clip/include/stdio.h にコピーし、直接修正しました。
 *	  /clip/include/stdio.h のコメントを参照してください。
 *	* Sat May 03 22:57:35 JST 2014 Naoyuki Sawa
 *	- Win32環境でのみインクルードするヘッダファイルに、malloc.hを追加しました。
 *	  Win32環境では、alloca()が、alloca.hではなく、malloc.hで宣言させています。
 *	* Sun May 18 04:36:19 JST 2014 Naoyuki Sawa
 *	- malloc.hとcrtdbg.hのインクルード順序を入れ替えました。
 *	  crtdbg.hの後でmalloc.hをインクルードすると、Debugビルド時にエラーになります。
 *	* Tue May 20 12:09:27 JST 2014 Naoyuki Sawa
 *	- Visual C++ 6.0 に無いため除外していたインクルードファイルのうち、
 *	  Windowsでも使用したいファイルを、clipフォルダ相対でインクルードするようにしました。
 *	  Windows用プロジェクトでも、極力、clipstd.h だけのインクルードで済ませたいからです。
 *	* Sun Sep 07 20:09:27 JST 2014 Naoyuki Sawa
 *	- sys/statvfs.h のインクルードを追加しました。
 *	* Wed Nov 19 20:53:11 JST 2014 Naoyuki Sawa
 *	- /usr/PIECE/include/stdlib.h を /clip/include/stdlib.h にコピーし、直接修正しました。
 *	  /clip/include/stdlib.h のコメントを参照してください。
 *	* Sun Feb 01 22:09:00 JST 2015 Naoyuki Sawa
 *	- Win32環境でよく使う、process.hを、ここで読み込むよう追加しました。
 *	* Thu Mar 05 21:07:05 JST 2015 Naoyuki Sawa
 *	- Win32環境でたまに使う、mbctype.h,mbstring.hを、ここで読み込むよう追加しました。
 *	* Sat May 16 13:07:41 JST 2015 Naoyuki Sawa
 *	- windows.hをインクルードする前に、WINVERを0x0400，_WIN32_WINNTを0x0400に定義しました。
 *	  Visual C++ 6.0では、これらの定義を明示的に定義しておかないと、CreateFiber()等のAPIが使えません。
 *	  なお、厳密には、WINVERの明示的な定義は不要で、_WIN32_WINNTを0x0400に定義するだけでも構いません。
 *	  Visual C++ 6.0では、デフォルトでWINVER=0x0400，_WIN32_WINNT=(未定義)となっているようだからです。
 *	  _WIN32_WINNTだけでも構わないのですが、判り易さのために、両方共明示的に定義しておく事にしました。
 *	* Sun May 17 15:20:04 JST 2015 Naoyuki Sawa
 *	- ucontext.h のインクルードを追加しました。
 *	* Mon Jul 13 21:22:16 JST 2015 Naoyuki Sawa
 *	- Win32環境でのみインクルードするヘッダファイルに、direct.hを追加しました。
 *	* Sun Jul 26 12:51:46 JST 2015 Naoyuki Sawa
 *	- GCC以外では、「__attribute__」を無視するようにしました。
 *	- 同様に、Visual C++以外では、「__declspec」を無視するようにしました。
 *	* Sun Jul 26 14:14:57 JST 2015 Naoyuki Sawa
 *	- clipstdw.h のインクルードを追加しました。
 *	* Mon Sep 28 21:01:46 JST 2015 Naoyuki Sawa
 *	- error.h のインクルードを追加しました。
 *	* Sat Oct 10 21:38:51 JST 2015 Naoyuki Sawa
 *	- /usr/PIECE/include/setjmp.h を /clip/include/setjmp.h にコピーし、直接修正しました。
 *	  /clip/include/setjmp.h のコメントを参照してください。
 *	* Wed Oct 14 21:50:46 JST 2015 Naoyuki Sawa
 *	- libgen.h のインクルードを追加しました。
 *	* Sun Oct 25 21:43:29 JST 2015 Naoyuki Sawa
 *	- Win32環境でよく使う、fcntl.hを、ここで読み込むよう追加しました。
 *	  これまでは、それぞれのWin32アプリケーションが、個別に読み込んでいました。
 *	* Tue Nov 17 21:10:26 JST 2015 Naoyuki Sawa
 *	- _CRTDBG_MAP_ALLOCを常に定義するのでなく、アプリケーション側で定義を選択できるようにしました。
 *	- これまでは、当ファイルの中で_CRTDBG_MAP_ALLOCを定義して、メモリリーク追跡を常に有効にしていました。
 *	  しかし、以下の問題が生じました。
 *	  ①「Boehm GC」のleak_detector.hを使うようになったので、_CRTDBG_MAP_ALLOCによるメモリリーク追跡は不要になりました。
 *	  │両方の機能が衝突して、正確に動作しないのではないかという心配も有ります。(まだ、実際に発生した事は有りませんが。)
 *	  ②Win32アプリケーションに、*.cと*.cppを両方含めた時に、*.cpp側でnew演算子の重複定義が発生する事が有りました。
 *	  │まだ十分に調査できていないのですが、_CRTDBG_MAP_ALLOCを外すと解決したので、これが原因の可能性が有ります。
 *	  上記二つの理由から、_CRTDBG_MAP_ALLOCを常に定義するのをやめる事にしました。
 *	- _CRTDBG_MAP_ALLOCによるメモリリーク追跡が必要なWin32アプリケーションでは、extclip.hの先頭の'#include "clipstd.h"'よりも上で、_CRTDBG_MAP_ALLOCを定義して下さい。
 *	  │#define _CRTDBG_MAP_ALLOC		←←←←←この位置で定義して下さい。
 *	  │#include "clipstd.h"  //標準ヘッダ取り込み
 *	  │#include "clipmisc.h" //その他いろいろ
 *	  │(以下略)
 *	* Tue Nov 24 21:41:25 JST 2015 Naoyuki Sawa
 *	- unistd.h のインクルードを追加しました。
 *	* Mon Jan 18 21:37:57 JST 2016 Naoyuki Sawa
 *	- syslog.h のインクルードを追加しました。
 *	* Sat Feb 20 21:07:39 JST 2016 Naoyuki Sawa
 *	- mmsystem.hとavifmt.hのインクルードを追加しました。
 *	  これらをインクルードしないと、Win32プロジェクトでclipcvid.hをインクルードした時に、AVIStreamHeaderが未定義エラーになるからです。
 *	- 警告4761を抑制しました。
 *	  これは、VC++6.0でchar型の仮引数に対してint型の実引数を渡した時などに出る警告です。
 *	  GCCでは出ない警告なので、VC++6.0でも抑制する事にしました。
 *	  Web上の情報によると、VC7以降でこの警告は出なくなっているそうです。
 *	* Sun Feb 21 21:02:01 JST 2016 Naoyuki Sawa
 *	- 2016/02/21変更:インクルードするファイルをavifmt.h⇒vfw.hに変更しました。
 *	  avifmt.hとvfw.hを両方インクルードすると定義が衝突するので一方しかインクルード出来ないようです。
 *	  VFW関連のAPIはvfw.hでしか定義されていないので、avifmt.hではなくvfw.hをインクルードするのが適切だと思いました。
 *	* Tue Mar 01 21:34:55 JST 2016 Naoyuki Sawa
 *	- C4131の警告レベルをデフォルトの4から1へ引き上げました。
 *	  例えば'#define FOO(x) ～'というマクロを使おうとして誤って'Foo(bar);'と書いた場合、旧形式の宣言'int Foo(int bar);'と解釈されてしまい警告が表示されず発見しづらいバグになる問題が有りました。
 *	  VC++6.0で生成したプロジェクトのデフォルト設定は警告レベル3であり、C4131は警告レベル4の警告なので警告レベル3の設定では表示されないからです。
 *	  この問題を回避するためにC4131の警告レベルをデフォルトの4から1へ引き上げることにしました。
 *	  3への引き上げでも充分なのですが、もし一時的にプロジェクトの警告レベルを3未満に変更してもC4131は表示されるように、1へ引き上げておく事にしました。
 *	- ただし、Bison/Flexの生成コードでは旧スタイルの宣言が使われているので、y.tab.c,及び,lex.yy.cでは警告レベルを元に戻しました。
 *	  具体的には、各ツールのy.tab.y,及び,lex.yy.lのコードブロック(%{～%})を参照して下さい。
 *	* Wed Mar 09 21:18:31 JST 2016 Naoyuki Sawa
 *	- 「Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」を導入しました。
 *	  □参照資料
 *	  │1.「Silverlight Developer Center - Download and install Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」
 *	  │   (http://social.msdn.microsoft.com/Forums/silverlight/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk)
 *	  │2.「Microsoft Developer Network - Windows7(64bit環境)でWindowsSDKを32bit版でインストールする」
 *	  │   (http://social.msdn.microsoft.com/Forums/ja-JP/ab41c933-4f0e-41c3-8ba4-bd8c5ba0d650/windows764bitwindowssdk32bit?forum=vsgeneralja)
 *	  │3.「CharatSoft.com」さんの「開発環境の構築」の記事
 *	  │   (http://www.charatsoft.com/develop/otogema/page/00environment/)
 *	- 導入手順を記録しておきます。(WinXp 32bit,Win7 64bit,Win10 64bitで検証済みです。)
 *	  ①参照資料1のリンクから、以下のファイルをダウンードする。(もし今後リンクが切れていた場合は、ファイル名で検索して下さい。)
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1.cab 
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.2.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.3.cab 
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.4.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.5.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.6.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.7.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.8.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.9.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.10.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.11.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.12.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.13.cab
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.bat
 *	    ＞http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/Extract.exe
 *	  ②ダウンロードしたフォルダで、以下のコマンドを実行する。
 *	    ＞mkdir tmp
 *	    ＞PSDK-FULL.bat tmp
 *	    すると、tmpフォルダの中に、セットアップファイルが展開される。
 *	  ③セットアップファイルを実行する。
 *	    ただし、'tmp/Setup.Exe'をWindows7(64bit環境)で実行すると、エラーが表示されて実行出来ない。(参照資料1,2の質問者の環境でも同じエラーが出ている。)
 *	    参照資料3によると、'tmp/Setup.Exe'はActiveXを用いてブラウザのUIを使ってインストールを選択する仕組みになっているらしく、Windows7(64bit環境)や新しいOSでは'tmp/Setup.Exe'が実行出来ないようだ。
 *	    WinXp(32bit環境)であっても、IEがデフォルトブラウザになっていないと、'tmp/Setup.Exe'が実行出来ないようだ。例えば、Chromeでは実行出来ない。
 *	    そこで、'tmp/Setup.Exe'ではなく、直接'tmp/setup/CoreSDK-x86.msi'を実行する。	←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←■■要点■■
 *	    途中で「Select An Installation Type」の選択が出るので、「Typical」を選択した。(「Custom」でも良いと思うが、「Typical」の方が安全だろう。)
 *	    インストールが完了すると、'C:\Program Files (x86)\Microsoft SDK\'フォルダ以下に、ファィルがインストールされている。
 *	  ④参照資料3を参考にして、VC++6.0にインクルードパスとライブラリパスを追加する。
 *	    具体的には、以下の通りです。
 *	    ・VC++6.0のメニューから、「ツール」→「オプション」→「ディレクトリ」タブを選択する。
 *	    ・「表示するディレクトリ」に'インクルードファイル'を選択し、リストの一番上に、'C:\Program Files (x86)\Microsoft SDK\include'を追加する。
 *	    ・「表示するディレクトリ」に'ライブラリファイル'を選択し、リストの一番上に、'C:\Program Files (x86)\Microsoft SDK\Lib'を追加する。
 *	    2016/03/09現在の、自分の環境では、各ディレクトリは以下のようになっている。
 *	    □インクルードファイル
 *	    ＞C:\Program Files (x86)\Microsoft SDK\include				←■■今回追加した。■■
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\INCLUDE		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\ATL\INCLUDE		←VC++6.0インストール時に元からある。
 *	    ＞C:\Home\Share\DxLib_VC\プロジェクトに追加すべきファイル_VC用		←DxLibを使う時に追加した。
 *	    □ライブラリファイル
 *	    ＞C:\Program Files (x86)\Microsoft SDK\Lib					←■■今回追加した。■■
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\LIB			←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\LIB		←VC++6.0インストール時に元からある。
 *	    ＞C:\Home\Share\DxLib_VC\プロジェクトに追加すべきファイル_VC用		←DxLibを使う時に追加した。
 *	    □実行可能ファイル
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\BIN			←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\Common\TOOLS		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\Common\TOOLS\WINNT		←VC++6.0インストール時に元からある。
 *	    ＞C:\WINDOWS\system32							←VC++6.0インストール時に元からある。
 *	    ＞C:\WINDOWS								←VC++6.0インストール時に元からある。
 *	    ＞C:\WINDOWS\System32\Wbem							←VC++6.0インストール時に元からある。
 *	    ＞C:\WINDOWS\System32\WindowsPowerShell\v1.0				←VC++6.0インストール時に元からある。
 *	    ＞C:\usr\PIECE\bin								←VC++6.0インストール時に自分で追加した。
 *	    ＞C:\Home\Share\Piece\clip\tool						←VC++6.0インストール時に自分で追加した。
 *	    ＞C:\Home\Tools								←VC++6.0インストール時に自分で追加した。
 *	    ＞C:\UnxUtils\usr\local\wbin						←VC++6.0インストール時に自分で追加した。
 *	    □ソースファイル
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\SRC		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\MFC\INCLUDE		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\ATL\INCLUDE		←VC++6.0インストール時に元からある。
 *	    ＞C:\Program Files (x86)\Microsoft Visual Studio\VC98\CRT\SRC		←VC++6.0インストール時に元からある。
 *	  導入手順は、以上です。
 *	- 「Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」を導入した事に伴い、WINVERと_WIN32_WINNTの定義を、0x0400⇒0x0502に変更しました。
 *	  ちなみに今回、「Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」を導入した目的は、GDI+を使いたいと思ったからです。
 *	  /clip/tool/dpsprsht/ が、ImageMagickに依存せずに、GDI+を使ってツール自身でスプライトシートを作成するように出来たらいいな、と思っています。
 *	  でも、2016/03/09現在はまだ、GDK+を使う準備として上記のSDKをインストールしただけで、GDK+の使い方はこれから勉強します。
 *	* Thu Mar 10 21:38:25 JST 2016 Naoyuki Sawa
 *	- gdiplus.hのインクルードを追加しました。
 *	* Sat Mar 19 21:19:21 JST 2016 Naoyuki Sawa
 *	- sys/types.hのインクルード順序を先頭へ移動しました。
 *	  sys/types.hにssize_tの定義を追加し、stdio.h内でssize_tを使用するように変更した事に伴い、stdio.hよりも先にsys/types.hをインクルードする必要が生じたからです。
 *	- ただし実際には、sys/types.hよりも先にstdio.hをインルードしても、エラーにはなりません。
 *	  別の止むを得ない理由のために、stdio.hの中でもssize_tを定義するようにしたので、sys/types.hでもstdio.hでも先にインクルードした方でssize_tが定義されるからです。
 *	  詳細は、/clip/include/stdio.hの同日のコメントを参照して下さい。
 *	  そんなわけで、sys/types.hを先頭へ移動しなくても動作上は問題ないのですが、ssize_tは正式にはsys/types.hで定義されるものだという事を強調するために、当ファイル内ではsys/types.hを先頭へ移動しておく事にしました。
 *	* Sat Apr 23 21:04:30 JST 2016 Naoyuki Sawa
 *	- parsonのヘッダファイル(parson/parson.h)インクルードを追加しました。
 *	- LibYAMLのヘッダファイル(yaml/yaml.h)インクルードを追加しました。
 *	* Sun Apr 24 21:05:43 JST 2016 Naoyuki Sawa
 *	- '#pragma comment(lib, "parson.lib")'と'#pragma comment(lib, "yaml.lib")'を追加しました。
 *	  これまではWin32プロジェクト毎の設定で'parson.lib'と'yaml.lib'をリンク指定していましたが、ここで指定する事にしました。
 *	- 本来は'liblua.lib'も同様にすべきなのですが、既存のWin32プロジェクトで'liblua.lib'を使用しているWin32プロジェクトが少ないので、'liblua.lib'は個別のままにする事にしました。
 *	  もし今後、'liblua.lib'を使用するWin32プロジェクトが増えたら、当ファイルに'#pragma comment(lib, "liblua.lib")'を追加して下さい。	⇒{{2016/06/14コメント追記:左記の追加を行いました。'Tue Jun 14 22:14:51 JST 2016'のコメントを参照して下さい。}}
 *	- ちなみに、GSM,Zlib,ExpatはWin32用ライブラリを用意していないので、対応外です。
 *	  これらはかなり昔に取り込んだライブラリであり、これまでWin32用ライブラリを作らないままになっていました。
 *	* Tue May 17 21:36:02 JST 2016 Naoyuki Sawa
 *	- glob.h のインクルードを追加しました。
 *	* Sat May 28 21:20:19 JST 2016 Naoyuki Sawa
 *	- Visual C++ .NETならば、コンパイラのstdint.hをインクルードするようにしました。
 *	  今後、Visual C++ .NETへ移行するための準備です。
 *	- Visual C++ .NETでコンパイルした時に、C4996ワーニングがたくさん出る問題を回避しました。
 *	  今後、Visual C++ .NETへ移行するための準備です。
 *	* Sun May 29 21:54:56 JST 2016 Naoyuki Sawa
 *	- Visual C++ .NETが、'c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h'の関数をインライン展開しないようにしました。
 *	  詳細は、以下の通りです。
 *	- VC++2015で当ライブラリをコンパイルしてみた所、VC++2015はstdio.hの関数をインライン展開するようになっており、当ライブラリが置き換えている関数と衝突してエラーになりました。
 *	  この問題を回避するには、_NO_CRT_STDIO_INLINEシンボルを定義しておけば、VC++2015はstdio.hの関数をインライン展開しないようです。
 *	  そこで、Visual C++ .NETならば_NO_CRT_STDIO_INLINEシンボルを定義して、stdio.hの関数がインライン展開されないようにしました。
 *	* Tue Jun 14 22:14:51 JST 2016 Naoyuki Sawa
 *	- signal.h のインクルードを追加しました。
 *	- '#pragma comment(lib, "liblua.lib")'を追加しました。
 *	  これまではWin32プロジェクト毎の設定で'liblua.lib'をリンク指定していましたが、ここで指定する事にしました。
 *	* Fri Jun 17 22:27:15 JST 2016 Naoyuki Sawa
 *	- 「using namespace Gdiplus;」を削除しました。
 *	  今後は明示的に'Gdiplus::'を指定するか,又は,各モジュール内で個別に「using namespace Gdiplus;」を書いて下さい。
 *	  「using namespace Gdiplus;」を削除した理由は、/clip/test.win/app.hでtk.hをインクルードした場合に、'Font'の定義が衝突したからです。
 *	* Mon Aug 22 21:52:16 JST 2016 Naoyuki Sawa
 *	- regexp.h のインクルードを追加しました。
 *	* Sun Sep 04 21:41:17 JST 2016 Naoyuki Sawa
 *	- 「#include <windows.h>」を「#pragma warning(disable: 4115)」～「#pragma warning(default: 4115)」で囲んでいたのを、「#pragma warning(push)」「#pragma warning(disable: 4115)」～「#pragma warning(pop)」に変更しました。
 *	  このケースでは、警告レベルをデフォルトに戻しても問題無いと思いますが、元の警告レベルに戻す方がより安全だからです。
 *	  今後、各ソース内で一時的に警告レベルを変更する場合も、デフォルトに戻さずに、元の警告レベルに戻すようにして下さい。
 *	* Tue Sep 06 21:06:46 JST 2016 Naoyuki Sawa
 *	- Win32環境で、tchar.hのインクルードを追加しました。
 *	  今すぐに必要になった訳ではないのですが、当ライブラリ独自のstrnextc()やstrinc()でなく、VC++6.0の_strnextc()や_strinc()を使っているソースをコンパイルする時に必要になりそうなので、追加しておく事にしました。
 *	* Tue Nov 15 09:07:00 JST 2016 Naoyuki Sawa
 *	- nuklear/nuklear_piece.libを作成した事に伴い、nuklear/nuklear_piece.hのインクルードを追加しました。
 *	  詳細は、nuklear/nuklear_piece.hの同日のコメントを参照して下さい。
 *	* Sat Nov 26 23:52:51 JST 2016 Naoyuki Sawa
 *	- arpa/inet.h(P/ECE用),及び,winsock2.h(Windows用)のインクルードを追加しました。
 *	  今回追加した目的は、ネットワークプログラムを作るためではなく、htonl(),htons(),ntohl(),ntohs()をバイトスワップのユーティリティ関数として使うためです。
 *	* Tue Nov 29 23:01:43 JST 2016 Naoyuki Sawa
 *	- ucontext.hを、Windowsでもインクルードするようになりました。
 *	  詳細は、/clip/ucontext.cの同日のコメントを参照して下さい。
 *	* Wed Apr 19 22:11:14 JST 2017 Naoyuki Sawa
 *	- ToolLib/ToolLib.hのインクルードを追加しました。
 *	- P/ECE環境では、ToolLib/ToolLib.hをインクルードする直前に、POINT,SIZE,RECTの定義を追加しました。
 *	  Windows環境との互換のために、ToolLibとは関係無くもっと上で定義しても良かったのですが、現在の所、ToolLib以外では必要無いので、ここで定義しておく事にしました。
 *	  もし今後、他のモジュールでもこれらの構造体の定義が必要になったら、ToolLibとは関係無くもっと上で定義するように変更して下さい。
 */
#ifndef __CLIP_STD_H__
#define __CLIP_STD_H__

/* * Sun May 18 16:37:13 JST 2014 Naoyuki Sawa
 * - 「_WIN32」が定義されていたら、確実に「WIN32」も定義するようにしました。
 * - Visual C++ 6.0は、「_WIN32」を常に定義します。
 *   アンダーバーの無い「 WIN32」は、AppWizardで生成したプロジェクトならば初期値として設定されていますが、
 *   コマンドラインで直接「cl.exe」を実行した場合は、明示的に「-DWIN32」を指定しない限り、定義されません。
 *   CLiPライブラリの各モジュールは「_WIN32」でなく「WIN32」を参照しており、
 *   これまで、「-DWIN32」の指定を忘れると、P/ECE用とWindows用のソース切替バグになり易い問題がありました。
 * - 根本的な修正方法は、各モジュールが参照しているシンボルを、「WIN32」⇒「_WIN32」に修正することですが、
 *   変更箇所が多すぎて、エンバグの危険が大きいと思うため、その方法は取りませんでした。
 *   その代りに、「_WIN32」が定義されていたら、ここで確実に「WIN32」も定義するようにしました。
 */
#ifdef  _WIN32
#ifndef  WIN32
#define  WIN32
#endif// WIN32
#endif//_WIN32

/* - 「_DEBUG」が定義されていたら、確実に「DEBUG」も定義するようにしました。
 * - Visual C++ 6.0は、Debug版に「_DEBUG」を定義します。アンダーバーの無い「DEBUG」は定義しません。
 *   CLiPライブラリの各モジュールは「_DEBUG」でなく「DEBUG」を参照しており、
 *   そのままでは、P/ECE用とWindows用のどちらで使用するかによってDebug版切替バグになり易い問題があります。
 * - 根本的な修正方法は、各モジュールが参照しているシンボルを、「DEBUG」⇒「_DEBUG」に修正することですが、
 *   変更箇所が多すぎて、エンバグの危険が大きいと思うため、その方法は取りませんでした。
 *   その代りに、「_DEBUG」が定義されていたら、ここで確実に「DEBUG」も定義するようにしました。
 */
#ifdef  _DEBUG
#ifndef  DEBUG
#define  DEBUG
#endif// DEBUG
#endif//_DEBUG

/* * Sun Jul 26 12:51:46 JST 2015 Naoyuki Sawa
 * - GCC以外では、「__attribute__」を無視するようにしました。
 *   □「通信用語の基礎知識 - __attribute__」(http://www.wdic.org/w/TECH/__attribute__)より引用:
 *   │二重括弧でくくるのには理由が存在し、それはGCC以外では、マクロで無視できるようにするためである。
 *   │複数の引数があっても、括弧でくくってあれば、マクロは一つの引数としてそれを扱うことができ、次のようにして無視することができる。
 *   │#ifndef __GNUC__
 *   │#define __attribute__(x)
 *   │#endif
 * - 同様に、Visual C++以外では、「__declspec」を無視するようにしました。
 *   ちなみに、「__declspec」は二重括弧ではなく一重括弧ですが、元々一つの「__declspec」に複数の属性を同時に指定出来ないので、問題になりません。
 *   複数の属性を指定する時、GCCでは一つの「__attribute__」の中に複数の属性を指定するのに対し、Visual C++では属性毎に「__declspec」を指定する、という違いが有ります。
 */
#ifndef __GNUC__
#define __attribute__(x)
#endif//__GNUC__
#ifndef _MSC_VER
#define __declspec(x)
#endif//_MSC_VER

//{{2016/05/29追加:Visual C++ .NETが、'c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h'の関数をインライン展開しないようにしました。
// * Sun May 29 21:54:56 JST 2016 Naoyuki Sawa
// - Visual C++ .NETが、'c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h'の関数をインライン展開しないようにしました。
//   詳細は、以下の通りです。
// - VC++2015で当ライブラリをコンパイルしてみた所、VC++2015はstdio.hの関数をインライン展開するようになっており、当ライブラリが置き換えている関数と衝突してエラーになりました。
//   この問題を回避するには、_NO_CRT_STDIO_INLINEシンボルを定義しておけば、VC++2015はstdio.hの関数をインライン展開しないようです。
//   そこで、Visual C++ .NETならば_NO_CRT_STDIO_INLINEシンボルを定義して、stdio.hの関数がインライン展開されないようにしました。
#if     (defined(_MSC_VER) && (_MSC_VER > 1200))	//Visual C++ .NETならば…
#define _NO_CRT_STDIO_INLINE
#endif//(defined(_MSC_VER) && (_MSC_VER > 1200))
//}}2016/05/29追加:Visual C++ .NETが、'c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h'の関数をインライン展開しないようにしました。

/* S1C33 Family C Compiler Package でサポートされている、
 * 標準ヘッダファイルをインクルードします。
 * * stddef.hをインクルードすると、wchar_tの多重定義エラーになります。
 *   そういえば確かに、コンパイラマニュアルのヘッダファイルリストには
 *   stddef.hは載っていません(他のヘッダファイルは全部載ってるのに)。
 *   とりあえず、インクルードリストから外して様子を見ることにします。
 *   ↓追記 Sat Jun 17 04:53:39 JST 2006 Naoyuki Sawa
 *   この問題の原因は、stddef.hとstdlib.hでwchar_tの定義が衝突していることでした。
 *   stdlib.h側の定義を抑制して問題を回避し、stddef.hのincludeを有効に戻しました。
 *   ↓追記 Tue Nov 22 02:39:29 JST 2011 Naoyuki Sawa
 *   /usr/PIECE/include/stddef.h を /clip/include/stddef.h にコピーし、直接修正することにしました。
 *   この変更に伴い、clipstd.hで_WCHAR_Tを定義することは不要になったため、clipstd.hの当該箇所をコメントアウトしました。
 *   /clip/include/stddef.h のコメントを参照してください。
 * * stdarg.hは単独では使えず、_BOUNDARYの未定義エラーになります。
 *   S1C33アーキテクチャ依存のヘッダファイル、smcvals.hが必要です。
 *   ↓追記 Tue Nov 22 02:15:06 JST 2011 Naoyuki Sawa
 *   /usr/PIECE/include/stdarg.h を /clip/include/stdarg.h にコピーし、smcvals.hをインクルードするようにしました。
 *   ただし、clipstd.hの中のsmcvals.hのインクルードも、そのまま残してあります。
 *   /clip/include/stdarg.h のコメントを参照してください。
 */
//#ifdef PIECE
//#define _WCHAR_T			/* 2006/06/17 stddef.hとstdlib.hのwchar_t衝突回避 */
//#endif /*PIECE*/
//→2011/11/22 /usr/PIECE/include/stddef.h を /clip/include/stddef.h にコピーし、直接修正することにしました。
#include <sys/types.h>			/* 2013/03/23 include/sys/types.hを新規作成 */					//←2016/03/19移動:sys/types.hのインクルード順序を先頭へ移動しました。sys/types.hにssize_tの定義を追加し、stdio.h内でssize_tを使用するように変更した事に伴い、stdio.hよりも先にsys/types.hをインクルードする必要が生じたからです。
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <limits.h>
#include <math.h>
#include <stdarg.h>
#include <stddef.h>			/* 2006/06/17 stddef.hのincludeを有効に戻しました */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <setjmp.h>
#include <assert.h>			/* 2006/07/20 assert.hをWin32固有からP/ECEとWin32共通に変更 */
#include <locale.h>			/* 2011/01/03 include/locale.hを新規作成 */
#include <search.h>			/* 2014/01/13 include/search.hを新規作成 */					//Visual C++ 6.0のsearch.hにはhcreate等のPOSIX関数が含まれていないので、WindowsではVisual C++ 6.0のsearch.hに加えてP/ECE用のsearch.hもインクルードする。尚、clipsrch.cの実装はP/ECE,Windows両対応である。下記参照。
#include <signal.h>			/* 2016/06/14 include/signal.hを新規作成 */
#ifdef  PIECE				/* 2012/11/30 {{Visual C++ 6.0 にはこれらのインクルードファイルが無いので除外 */
#include <dirent.h>			/* 2011/01/26 include/dirent.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <fnmatch.h>			/* 2011/02/03 include/fnmatch.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <stdint.h>			/* 2011/05/11 include/stdint.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <alloca.h>			/* 2012/10/16 include/alloca.hを新規作成 */					//Windowsでは使用しない。Windowsでは、malloc.hがこれに相当する。
#include <getopt.h>			/* 2013/03/10 include/getopt.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <ucontext.h>			/* 2015/05/17 include/ucontext.hを新規作成 */					//Windowsでは使用しない。Windowsでは、ファイバ関数が同じ機能に相当する。	{{2016/11/29コメント追記:ucontext.hを、Windowsでもインクルードするようになりました。詳細は、/clip/ucontext.cの同日のコメントを参照して下さい。}}
#include <error.h>			/* 2015/09/28 include/error.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <libgen.h>			/* 2015/10/14 include/libgen.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <unistd.h>			/* 2015/11/24 include/unistd.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <syslog.h>			/* 2016/01/18 include/syslog.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <glob.h>			/* 2016/05/17 include/glob.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <regexp.h>			/* 2016/08/22 include/regexp.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <X11/keysym.h>			/* 2013/12/02 include/X11/keysym.h,include/X11/keysymdef.hを新規作成 */		//Windowsでは使用しない。X11/keysym.hがインクルードパス相対でX11/keysymdef.hをインクルードしているため、clip/includeをインクルードパスに含めずにclipフォルダ相対でインクルードできないから。Windowsで使用したい場面も無いと思うので、このままで良いだろう。
#endif/*PIECE*/				/* 2012/11/30 }}Visual C++ 6.0 にはこれらのインクルードファイルが無いので除外 */
#ifdef  WIN32				/* 2014/05/20 {{上記で除外したファイルのうち、Windowsでも使用したいファイルを、clipフォルダ相対でインクルードする。尚、Windowsでは、clip/includeをインクルードパスに含めることはできない。もしそうすると、P/ECE用のstdio.h等をインクルードしてしまうから。 */
#include <include/search.h>		/* 2014/05/20 */								//Visual C++ 6.0のsearch.hにはhcreate等のPOSIX関数が含まれていないので、WindowsではVisual C++ 6.0のsearch.hに加えてP/ECE用のsearch.hもインクルードする。尚、clipsrch.cの実装はP/ECE,Windows両対応である。
#include <include/dirent.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/fnmatch.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
//{{2016/05/28変更:Visual C++ .NETならば、コンパイラのstdint.hをインクルードするようにしました。
//#include <include/stdint.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
//↓2016/05/28変更:Visual C++ .NETならば、コンパイラのstdint.hをインクルードするようにしました。
#if     (_MSC_VER > 1200)	//Visual C++ .NETならば…
#include <stdint.h>			/* 2016/05/28 */								//Visual C++ .NETならば、コンパイラのstdint.hをインクルードする。
#else //(_MSC_VER > 1200)	//Visual C++ 6.0 ならば…
#include <include/stdint.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#endif//(_MSC_VER > 1200)
//}}2016/05/28変更:Visual C++ .NETならば、コンパイラのstdint.hをインクルードするようにしました。
#include <include/getopt.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/ucontext.h>		/* 2015/05/17 include/ucontext.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。		{{2016/11/29コメント追記:ucontext.hを、Windowsでもインクルードするようになりました。詳細は、/clip/ucontext.cの同日のコメントを参照して下さい。}}
#include <include/error.h>		/* 2015/09/28 include/error.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/libgen.h>		/* 2015/10/14 include/libgen.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/unistd.h>		/* 2015/11/24 include/unistd.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/syslog.h>		/* 2016/01/18 include/syslog.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/glob.h>		/* 2016/05/17 include/glob.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/regexp.h>		/* 2016/08/22 include/regexp.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#endif/*WIN32*/				/* 2014/05/20 }}上記で除外したファイルのうち、Windowsでも使用したいファイルを、clipフォルダ相対でインクルードする。尚、Windowsでは、clip/includeをインクルードパスに含めることはできない。もしそうすると、P/ECE用のstdio.h等をインクルードしてしまうから。 */
//#include <sys/types.h>		/* 2013/03/23 include/sys/types.hを新規作成 */					//→2016/03/19移動:sys/types.hのインクルード順序を先頭へ移動しました。sys/types.hにssize_tの定義を追加し、stdio.h内でssize_tを使用するように変更した事に伴い、stdio.hよりも先にsys/types.hをインクルードする必要が生じたからです。
#include <sys/stat.h>			/* 2013/03/23 include/sys/stat.hを新規作成 */
#ifdef  PIECE				/* 2014/09/07 {{Visual C++ 6.0 にはこれらのインクルードファイルが無いので除外 */
#include <sys/statvfs.h>		/* 2014/09/07 include/sys/statvfs.hを新規作成 */
#include <arpa/inet.h>			/* 2016/11/26 include/arpa/inet.h,及び,include/netinet/in.hを新規作成 */	//{{2016/11/26追加:arpa/inet.h(P/ECE用),及び,winsock2.h(Windows用)のインクルードを追加しました。}}
#endif/*PIECE*/				/* 2014/09/07 }}Visual C++ 6.0 にはこれらのインクルードファイルが無いので除外 */

/* P/ECE専用 */
#ifdef PIECE
#define NOPCESPRINTF			/* sprintf()/vsprintf()はclipprnt.cで定義 */
#include <smcvals.h>			/* S1C33用: va_start()等に必要   */
#include <piece.h>			/* P/ECE用: 基本ヘッダファイル */
#include <pclsprite.h>			/* P/ECE用: スプライト/BGライブラリ */
#include <muslib.h>			/* P/ECE用: 標準音楽ドライバ */
#include <s1c33cpu.h>			/* P/ECE用: コアCPU制御 */
#include "vector.h"			/* P/ECE用: カーネルサービスベクタ番号 */
#include "c33209.h"			/* S1C33用: I/Oマップ */
///* S1C33 Family C Compiler Package の pow() には不具合があり、間違った値を返すことがあります。
// * 例えば pow(1.25, 1.0) の結果が 0.0 になることがあります。まだ原因は究明できていません。
// * pow(1.0～1.5, 0.0以外) あたりが危ないようですが、微妙なコーディングの違いによって発症しないこともあります。
// * 現在、二種類の回避方法が発見されています。
// * ・pow()を呼ぶだけのラッピング関数pow_wrap()を用意し、常にpow_wrap()を経由してpow()を呼び出す。
// *   確かに回避できるのですが、なぜこれだけで回避できるのか全くわからないのが不安なところです。
// * ・pow()をexp()とlog()に展開し、pow()を使わないようにします。
// *   もしも不具合の原因がpow()単体の問題であったならば、この方法で確実に回避できるはずです。
// *   ただし、算術関数の呼び出しが増えるため、プログラムが遅くなってしまう欠点があります。
// * いずれにせよ、もともとの原因がわかっていないので、どちらの方法でも確実に回避できるとは言い切れません。
// */
//#define pow(x, y)	exp(log(x) * (y))
//→2003/03/23 マクロで置き換えるのではなく、関数を再定義して置き換えることにしました。clippce.cにあります。
///* * Thu Jun 08 07:45:00 JST 2006 Naoyuki Sawa
// * - EPSONライブラリのlimits.hは問題があり、INT_MINを使うと以下のような警告が表示されます。
// *	warning: decimal constant is so large that it is unsigned
// *   警告を回避するために、INT_MINを再定義しました。(LONG_MINについても同様です。)
// *   コンパイル時の警告の有無だけの違いであり、生成されるバイナリに変化はありません。
// *   ややトリッキーですが、INT_MINをこのように定義して警告を回避するのは、C言語の定石です。
// */
//#undef  INT_MIN  // (-2147483648     )	/* EPSONライブラリの定義 (誤) */
//#define INT_MIN     (-2147483647  - 1)	/* Visual C++ 6.0 の定義 (正) */
//#undef  LONG_MIN // (-2147483648     )	/* EPSONライブラリの定義 (誤) */
//#define LONG_MIN    (-2147483647L - 1)	/* Visual C++ 6.0 の定義 (正) */
//→2011/11/22 /usr/PIECE/include/limits.h を /clip/include/limits.h にコピーし、直接修正することにしました。
#endif /*PIECE*/

/* Windows専用 */
#ifdef WIN32
#define STRICT
//{{2016/03/09変更:「Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」を導入した事に伴い、WINVERと_WIN32_WINNTの定義を、0x0400⇒0x0502に変更しました。
//#define WINVER	0x0400		/* CreateFiber()等のAPIを使うために必要。 */	/*{{2015/05/16追加}}*/	//┬2016/02/20コメント追加:本当は0x0500にしたいのだが、0x0500にするとVC++6.0では「NOTE: WINVER has been defined as 0x0500 or greater which enables Windows NT 5.0 and Windows 98 features. When these headers were released, Windows NT 5.0 beta 1 and Windows 98 beta 2.1 were the current versions. For this release when WINVER is defined as 0x0500 or greater, you can only build beta or test applications.  To build a retail application, set WINVER to 0x0400 or visit http://www.microsoft.com/msdn/sdk to see if retail Windows NT 5.0 or Windows 98 headers are available. See the SDK release notes for more information.」という警告が大量に出る。
//#define _WIN32_WINNT	0x0400		/* CreateFiber()等のAPIを使うために必要。 */	/*{{2015/05/16追加}}*/	//┘                       VC++6.0ではWINVER,_WIN32_WINNTを、0x0400よりも大きな値にしない方が良いようだ。0x0500以上でないと定義されないAPIは、個別に対応する事にした。具体例は、DxlibHelper.cppでEnumDisplayMonitors()を呼び出している箇所を参照して下さい。
//↓2016/03/09変更:「Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」を導入した事に伴い、WINVERと_WIN32_WINNTの定義を、0x0400⇒0x0502に変更しました。
#define WINVER		0x0502		//┬0x0400=Windows 95 and Windows NT 4.0,0x0410=Windows 98,0x0500=Windows Me and Windows 2000,0x0501=Windows XP,0x0502=Windows Server 2003
#define _WIN32_WINNT	0x0502		//┘0x0501(Windows XP)でも充分なのですが、VC++6.0と当SDKが対応出来る上限のOSである、0x0502(Windows Server 2003)を設定しておく事にしました。
//}}2016/03/09変更:「Microsoft Platform SDK Febuary 2003 (Last version with VC6 support)」を導入した事に伴い、WINVERと_WIN32_WINNTの定義を、0x0400⇒0x0502に変更しました。
//{{2016/11/26追加:arpa/inet.h(P/ECE用),及び,winsock2.h(Windows用)のインクルードを追加しました。
// * Sat Nov 26 23:52:51 JST 2016 Naoyuki Sawa
// - arpa/inet.h(P/ECE用),及び,winsock2.h(Windows用)のインクルードを追加しました。
//   今回追加した目的は、ネットワークプログラムを作るためではなく、htonl(),htons(),ntohl(),ntohs()をバイトスワップのユーティリティ関数として使うためです。
// - winsock2.hは、windows.hよりも先にインクルードする必要が有ります。
//   □参考資料:「kouma's lifelog」(http://kouma.hatenablog.com/)さんの「winsock2の罠」(http://kouma.hatenablog.com/entry/2012/08/15/232143)の記事より引用
//   │winsock2を使用する場合windows.hをインクルードする前にwinsock2.hをインクルードしましょう。
//   │#include <windows.h>
//   │#include <WinSock2.h>
//   │とすると
//   │1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: 'AF_IPX' : マクロが再定義されました。
//   │1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(460) : 'AF_IPX' の前の定義を確認してください
//   │...
//   │と怒られます。
//   │どうもwindows.hはインクルードする前にwinsockがインクルードされていないとwinsock.hをインクルードするのだとか。
//   │ということで対応策はインクルードの順番を変えるか_WINSOCKAPI_をdefineしましょう。　－＞　ソース「MSDN - windows.h and winsock2.h」(https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/4a90b143-1fb8-43e9-a54c-956127e0c579/windowsh-and-winsock2h?forum=windowssdk)
//   │#include <WinSock2.h>
//   │#include <windows.h>
//   │か
//   │#define _WINSOCKAPI_
//   │#include <windows.h>
//   │#include <WinSock2.h>
//   │ちなみにWIN32_LEAN_AND_MEANを定義しても良いようで。　－＞　ソース2「MSDN - Creating a Basic Winsock Application」(https://msdn.microsoft.com/en-us/library/ms737629(VS.85).aspx)
//   │まぁLEAN_AND_MEANはwinsock意外にも影響するのでwinsockのみであれば_WINSOCKAPI_で良いでしょう。
//   │ひっかかったのでメモ。
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
//}}2016/11/26追加:arpa/inet.h(P/ECE用),及び,winsock2.h(Windows用)のインクルードを追加しました。
//{{2016/09/04変更:「#include <windows.h>」を「#pragma warning(disable: 4115)」～「#pragma warning(default: 4115)」で囲んでいたのを、「#pragma warning(push)」「#pragma warning(disable: 4115)」～「#pragma warning(pop)」に変更しました。
//#pragma warning(disable: 4115)		/* 関数の仮引数リストで構造体、共用体、列挙型の定義に使われました。 */
//#include <windows.h>
//#pragma warning(default: 4115)
//↓2016/09/04変更:「#include <windows.h>」を「#pragma warning(disable: 4115)」～「#pragma warning(default: 4115)」で囲んでいたのを、「#pragma warning(push)」「#pragma warning(disable: 4115)」～「#pragma warning(pop)」に変更しました。
#pragma warning(push)
#pragma warning(disable: 4115)		/* 関数の仮引数リストで構造体、共用体、列挙型の定義に使われました。 */
#include <windows.h>
#pragma warning(pop)
//}}2016/09/04変更:「#include <windows.h>」を「#pragma warning(disable: 4115)」～「#pragma warning(default: 4115)」で囲んでいたのを、「#pragma warning(push)」「#pragma warning(disable: 4115)」～「#pragma warning(pop)」に変更しました。
#include <mmsystem.h>			//┐
#pragma comment(lib, "winmm.lib")	//│
//{{2016/02/21変更:avifmt.h⇒vfw.h	//│
//#include <avifmt.h>			//├2016/02/20追加:mmsystem.hとavifmt.hのインクルードを追加しました。これらをインクルードしないと、Win32プロジェクトでclipcvid.hをインクルードした時に、AVIStreamHeaderが未定義エラーになるからです。
//↓2016/02/21変更:avifmt.h⇒vfw.h	//│2016/02/21変更:インクルードするファイルをavifmt.h⇒vfw.hに変更しました。avifmt.hとvfw.hを両方インクルードすると定義が衝突するので一方しかインクルード出来ないようです。VFW関連のAPIはvfw.hでしか定義されていないので、avifmt.hではなくvfw.hをインクルードするのが適切だと思いました。
#include <vfw.h>			//│
//}}2016/02/21変更:avifmt.h⇒vfw.h	//│
#pragma comment(lib, "vfw32.lib")	//┘
#ifdef  __cplusplus			//┐
#include <gdiplus.h>			//│
//using namespace Gdiplus;		//├2016/03/10追加:gdiplus.hのインクルードを追加しました。	{{2016/06/17削除:「using namespace Gdiplus;」を削除しました。今後は明示的に'Gdiplus::'を指定するか,又は,各モジュール内で個別に「using namespace Gdiplus;」を書いて下さい。「using namespace Gdiplus;」を削除した理由は、/clip/test.win/app.hでtk.hをインクルードした場合に、'Font'の定義が衝突したからです。}}
#pragma comment(lib, "gdiplus.lib")	//│
#endif//__cplusplus			//┘
/* 非標準の拡張機能に関する警告を抑制します。 */
#pragma warning(disable: 4200)		/* 非標準の拡張機能が使用されています:構造体または共用体中にサイズが0の配列があります。 */	//これは.cppからインクルードした時に出る警告です。
#pragma warning(disable: 4204)		/* 非標準の拡張機能が使用されています:定数でない初期化子の集合です。 */
//#pragma warning(disable: 4214)	/* 非標準の拡張機能が使用されています:整数型以外のビットフィールドです。 */
#pragma warning(disable: 4244)		/* '...'から'...'に変換しました。データが失われているかもしれません。 */
#pragma warning(disable: 4761)		/* 関数の仮引数と実引数のベース型が異なっています。実引数を仮引数の型に変換します。 */		//{{2016/02/20追加:警告4761を抑制しました。これは、VC++6.0でchar型の仮引数に対してint型の実引数を渡した時などに出る警告です。GCCでは出ない警告なので、VC++6.0でも抑制する事にしました。Web上の情報によると、VC7以降でこの警告は出なくなっているそうです。}}
/* 重要な警告の警告レベルを引き上げます。 */
#pragma warning(1: 4131)		/* '...':旧形式の宣言が使われています。 */	//{{2016/03/01追加:C4131の警告レベルをデフォルトの4から1へ引き上げました。例えば'#define FOO(x) ～'というマクロを使おうとして誤って'Foo(bar);'と書いた場合、旧形式の宣言'int Foo(int bar);'と解釈されてしまい警告が表示されず発見しづらいバグになる問題が有りました。VC++6.0で生成したプロジェクトのデフォルト設定は警告レベル3であり、C4131は警告レベル4の警告なので警告レベル3の設定では表示されないからです。この問題を回避するためにC4131の警告レベルをデフォルトの4から1へ引き上げることにしました。3への引き上げでも充分なのですが、もし一時的にプロジェクトの警告レベルを3未満に変更してもC4131は表示されるように、1へ引き上げておく事にしました。ただし、Bison/Flexの生成コードでは旧スタイルの宣言が使われているので、y.tab.c,及び,lex.yy.cでは警告レベルを元に戻しました。具体的には、各ツールのy.tab.y,及び,lex.yy.lのコードブロック(%{～%})を参照して下さい。}}
//{{2016/05/28追加:Visual C++ .NETでコンパイルした時に、C4996ワーニングがたくさん出る問題を回避しました。
#if     (_MSC_VER > 1200)	//Visual C++ .NETならば…
// * Sat May 28 21:20:19 JST 2016 Naoyuki Sawa
// - Visual C++ .NETでコンパイルした時に、C4996ワーニングがたくさん出る問題を回避しました。
//   今後、Visual C++ .NETへ移行するための準備です。
// - □「粉末@それは風のように(日記)」(https://funmatu.wordpress.com/)さんの「C4996ワーニングについて」(https://funmatu.wordpress.com/2009/05/04/C4996ワーニングについて/)を参照させて頂きました。以下、引用です:
//   │よくVC++6.0で書いたプログラムをそのままVC2005とかに移植すると、C4996ワーニングで、scanfなどがセキュアじゃないと怒られる．
//   │これを消そうと思うと、scanf_sってセキュアな関数に書き直す必要があるけど、扱うデータ型によっては引数でバッファサイズを指定してやる必要があったりする。
//   │そこで、ワーニングを消すには以下の2つの方法がある。
//   ││#define _CRT_SECURE_NO_WARNINGS
//   ││#pragma warning(disable: 4996)
//   │#define _CRT_SECURE_NO_WARNINGS はセキュア関数に関するワーニングだけを消す。ようは、***_sっていうのに関するワーニングだけを消す。
//   │それに対して、#pragma warning(disable: 4996) はC4996ワーニングを無効にする。
//   │C4996はセキュリティ上の理由から使用されなくなったMFC関数またはATL関数を使用している場合以外にも、<hash_map>ヘッダーファイルと<hash_set>ヘッダーファイルのメンバをstd名前空間で使用している場合に発生する。
//   │なので、C4996そのものを無効にするってのは、必ずしも・・・というか、余り好ましくない。
//   │そんなわけで、出来ればpragmaでC4996をdisableするよりは、#define _CRT_SECURE_NO_WARNINGS でセキュア関数関連のワーニングだけを消すほうが良い。
//   上記の記事では、「#pragma warning(disable: 4996)」よりも「#define _CRT_SECURE_NO_WARNINGS」を勧められていますいますが、今回はセキュリティを重視していないので、より簡単に多くの警告を消せる前者を使う事にしました。
#pragma warning(disable: 4996)		//This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
#endif//(_MSC_VER > 1200)
//}}2016/05/28追加:Visual C++ .NETでコンパイルした時に、C4996ワーニングがたくさん出る問題を回避しました。
/* P/ECEには無く、Windowsでよく使うヘッダファイルを、ここで読み込みます。 */
//#include <assert.h>	/* assert() */
//→2006/07/20 assert.hをWin32固有からP/ECEとWin32共通に変更
#include <io.h>		/* open()、isatty()等 */
#include <fcntl.h>	/* _O_BINARY、_O_NOINHERIT等 */
#include <conio.h>	/* kbhit()、getch()等 */
#include <direct.h>	/* chdir(),getcwd(),mkdir(),rmdir() */
#include <malloc.h>	/* alloca() */										//←┐<malloc.h>と<crtdbg.h>のインクルード順序は必須です。
#include <process.h>	/* _beginthread()等 */									//　│malloc.hの中でもmalloc()等の関数宣言が行われており、
#include <mbctype.h>	/* _ismbblead()、_ismbbtrail()等 */							//　│crtdbg.hのマクロ置き換えより先にする必要があります。
#include <mbstring.h>	/* _ismbchira()、_ismbckata()等 */							//　│逆にすると、マクロ定義後に関数宣言を行うことになり、
#include <tchar.h>	/* _strnextc()、_strinc()等 */								//　│Debugビルド時にエラーになります。
/*{{2006/01/04 --------------------------------- メモリリーク追跡 --------------------------------- */		//　│
/* malloc()等をデバッグ版に置き換えて、メモリリークのレポート時に、ファイル名、行番号を表示します。 */		//　│
//{{2015/11/17変更:_CRTDBG_MAP_ALLOCを常に定義するのでなく、アプリケーション側で選択できるようにしました。	//　│
//#define _CRTDBG_MAP_ALLOC /* ← この二行の順番、必須です!! 逆にすると */					//　│
//#include <crtdbg.h>       /* ← _CRTDBG_MAP_ALLOCが有効になりません!! */					//←┘
//↓2015/11/17変更:_CRTDBG_MAP_ALLOCを常に定義するのでなく、アプリケーション側で定義を選択できるようにしました。
#ifdef  _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
//}}2015/11/17変更:_CRTDBG_MAP_ALLOCを常に定義するのでなく、アプリケーション側で定義を選択できるようにしました。
/* プログラム終了時に、メモリリークをレポートするよう指示します。main()の最初に呼び出してください。 */
#define DEBUG_INIT() do {											\
	/* * メモリリークのレポートは、警告レベルのデバッグメッセージとして出力されます。               */	\
	/*   初期状態では、警告レベルのデバッグメッセージはどこにも表示されないようです。               */	\
	/* - VC++ 6.0のヘルプには、初期状態では、stderrまたはデバッガに出力されると書いてありますが、   */	\
	/*   VC++ 6.0 SP6＋Windows 2000で試してみたところ、初期状態ではどこにも出力されませんでした。   */	\
	/* * メモリリークのレポートを表示するために、警告レベルのデバッグメッセージ出力先を設定します。 */	\
	/*   出力先は、stderrと、デバッガの両方とします。(_CrtSetReportMode()は複数設定が可能です)      */	\
	/* - stderrへ出力する理由は、プログラムを直接実行した場合は、デバッガ出力が見られないからです。 */	\
	/* - デバッガへ出力する理由は、コンソールプログラムをVC++上でデバッグ実行した場合、終了間際に   */	\
	/*   stderrへレポートが出力されても、すぐにコンソールが閉じてしまって、見られないからです。     */	\
	/* * エラーレベル、および、アサートレベルのデバッグメッセージ出力は、メモリリークのレポートには */	\
	/*   関係無いので、ここで出力先を設定する必要はありません。                                     */	\
	_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);					\
	_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);							\
	/* _CrtSetReportMode(_CRT_ERROR, ...); → 変更しません */						\
	/* _CrtSetReportMode(_CRT_ASSERT, ...); → 変更しません */						\
	/* デバッグヒープマネージャのメモリ割り当て動作を設定します。 */					\
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF      | /* Turn on debug allocation       */				\
		       _CRTDBG_CHECK_ALWAYS_DF   | /* Check heap every alloc/dealloc */				\
		    /* _CRTDBG_CHECK_CRT_DF      |    Leak check/diff CRT blocks     */				\
		    /* _CRTDBG_DELAY_FREE_MEM_DF |    Don't actually free memory     */				\
		       _CRTDBG_LEAK_CHECK_DF);     /* Leak check at program exit     */				\
} while(0);
//{{2015/11/17追加:_CRTDBG_MAP_ALLOCを常に定義するのでなく、アプリケーション側で定義を選択できるようにしました。
#endif//_CRTDBG_MAP_ALLOC
//}}2015/11/17追加:_CRTDBG_MAP_ALLOCを常に定義するのでなく、アプリケーション側で定義を選択できるようにしました。
/*}}2006/01/04 --------------------------------- メモリリーク追跡 --------------------------------- */
/*{{2006/06/28 Visual C++ 6.0のC言語では、inlineが使えないので、__inlineへの置き換えを定義しました。*/
#ifndef __cplusplus
#define inline __inline
#endif//__cplusplus
/*}}2006/06/28 Visual C++ 6.0のC言語では、inlineが使えないので、__inlineへの置き換えを定義しました。*/
#include "clipstdw.h"	/* 2015/07/26 Win32プロジェクト用の追加標準関数宣言 */
#endif /*WIN32*/

/* GSM */
#include "gsm/gsm.h"

/* Zlib */
#include "zlib/zlib.h"
#include "zlib/unzip.h"

/* Expat */
#include "expat/expat.h"

/* Lua */
#include "liblua/lua.h"
#include "liblua/lauxlib.h"
#include "liblua/lualib.h"
#ifdef  WIN32
#pragma comment(lib, "liblua.lib")
#endif//WIN32

/* parson */
#include "parson/parson.h"
#ifdef  WIN32
#pragma comment(lib, "parson.lib")
#endif//WIN32

/* LibYAML */
#define YAML_DECLARE_STATIC
#include "yaml/yaml.h"
#ifdef  WIN32
#pragma comment(lib, "yaml.lib")
#endif//WIN32

/* Nuklear */
#ifdef  PIECE
#include "nuklear/nuklear_piece.h"	//NuklearのP/ECE用レンダリングバックエンド
#endif//PIECE
#ifdef  WIN32
//#include "nuklear/nuklear_dxlib.h"	//NuklearのDxLib用レンダリングバックエンド	⇒ここではインクルードしません。'/clip/libclip/extclip.h'にてインクルードします。(実際にはnuklear_dxlib.hはDxLib特有の定義を使っていないのでここでインクルードする事も可能ではあるのですが、一応'/clip/libclip/extclip.h'にて'DxLib.h'よりも後でインクルードする事にしました。)
#endif//WIN32

/* ToolLib */
#ifdef  PIECE
typedef struct tagPOINT { int x, y; } POINT;			//┐
typedef struct tagSIZE { int cx, cy; } SIZE;			//├'C:\Program Files (x86)\Microsoft Visual Studio\VC98\Include\WTYPES.H'参照
typedef struct tagRECT { int left, top, right, bottom; } RECT;	//┘
#endif//PIECE
#include "ToolLib/ToolLib.h"

#endif /*__CLIP_STD_H__*/
