昔から、C言語と SJIS は相性が悪いと言われてきた。 それは SJIS では、 漢字の2バイト目が 0xC5 (\ の ASCII コード) に なることがあり、 そのために C コンパイラーに手を入れないと正しく動かなかったからである。 現在の Cygwin の gcc は (GCC のバージョンが 3.4 以上なので)
gcc -finput-charset=cp932 -fexec-charset=cp932 myprog.c |
bash 用 alias 定義 |
alias gcc='gcc -finput-charset=cp932 -fexec-charset=cp932' |
tcsh 用 alias 定義 |
alias gcc 'gcc -finput-charset=cp932 -fexec-charset=cp932' |
メッセージの日本語化については、 setenv OUTPUT_CHARSET sjis としておくか? (http://www.sixnine.net/cygwin/cygwin-doc/japo.html を見よ。) また setenv LANG ja_JP.SJIS も必要かも。
http://cygwin-je.sourceforge.jp/cygwin_je/ というのもある。