しーぞく、いい加減にしてくれ
と、あらためて言いたくなる、C言語族 - その文字列処理の煩雑さ。MS 新OS登場、各社旺盛な宣伝・販拡、まことに結構なんですけれど。
Visual C++のUNICODE対応
上記サイトが導いた結論も、実のところ、VCコンパイラは「危険だ」と処断します。MSが主張するファイル出力の"模範解答"は下記のようなコード。(追記10/20)
#define TEST_OUTPUT_FILE "XXXX.txt"
#define TEST_STRINGS "ファイル出力テスト\n"
//(※実際は文字列をリソースに分離)
FILE* fp;
errno_t errNo = _tfopen_s(
&fp, _T(TEST_OUTPUT_FILE), _T("w"));
_ftprintf(fp, _T(TEST_STRINGS));
fclose(fp);
参考
汎用テキスト一覧 10/20
(Open Office Calc/ods.zip)
MSDN:Generic-Text Mappings 10/20
MSDN:マップの使用, プログラム例 10/20
Security-Enhanced Versions 2008 10/22
Resources/Strings 11/6
注:上記「_s」一覧は英語版でも抜け落ちがある。全体像の把握に努めたものの、未だ不明。ソース秘匿のうえ公開ドキュメントも不備なのだから、バッファ・オーバラン等脆弱性、無くなる道理なし。11/6
唐突ですが、日本の UIプログラマが、文字セット・コンパイラ・デバッガ(IDE込み)等、扱い方を習熟しておくべき組み合わせとして、次のような例が考えられますかね。(赤印とくに優先。
Borland、Digital Mars等、除外御免)
1. C95, ASCII ....GNU + CodeBlocks(GDB)
2. C95, MBCS(DBCS).....GNU + 同上同様例
3. C++03, MBCS(DBCS).....GNU + ...
4. C95, UNICODE........GNU + ...
* 5. C++03, UNICODE....GNU + ...
* 6. C++03 MBCS(DBCS).........Visual C++
* 7. C++03, UNICODE..Visual C++(Win GUI)
8.(教養)C95...Visual C++
9.(教養)C99
大半の欧米プログラマ、日本のUNIXオペレータが熟知しているのは、せいぜい 1 だけ。5 あたりまで熟知した人は、まれ。バックエンドは楽でいい。
関連記事 #1, #2
付記:MSDN解説「国際化」
MSは「まだ完全でない」と、さらりと書いています。これだけ煩雑な処理を、完璧にこなしたとしても、なお不具合・不都合が出る、ということ。そりゃ、アメリカ人には、優先順位の低い話でしょうよ。
付記2:残念ながら、ネット上で日本語で読める Win32(64) API 関連サイトは、上記(8)のホビー・ユーザ向け解説が多い。C言語だけ専門学校で学んだ生徒が Vector あたりに貧弱な自作GUIツールを並べるレベル。
(これはMFCやCOM+を知らない、という話とは、別。いまや主要APIはC++なので、実用プログラムをC文法だけで書くメリットは、何も無い)
付記3
10/19:ビジネスユーザーは 7 以降のMSに注目すべし
言うわ。「日本のディベロッパーの皆さん、あなたがたは余計なことを考えず、ひたすらドライバ等、作っておればよいのですよ」という意味ですね。
付記4
10/20:7で拡張されたアクセシビリティ機能
たしかに、この機能は、他のOSに無い美点。
付記5
10/29:上記はフロント・エンドでの話。ハード周縁でC言語は今も中心的存在。念のため。
付記6
11/5:「UI関連は意図的にやらない」と自慢げに書いたブログを、いくつか散見したのでメモ。「結婚できない男」が「結婚しない男」と自己粉飾するようなもの。
試しに、折りたたまれたGDI関連のJavaScript ツリーだけでも、全部開いてみるとよい。その分量に驚愕するだろう。ざっと勘定したところ、VUI,TUIを含め MS・UI関連の関数・構造体等項目群の総数は、標準Cライブラリの数百倍、存在する。
「MSの端末9割支配」の実体は、これらのAPI群。
付記7:
11/5:「Developer! Developer! Develper!」
(引用)「例えばテレビを見ていてTiger Woodsがすばらしいパットを決めたとしよう。その時テレビに向かって私が“ヘイBill! 今のTigerのパットを見たか?”と話しかければ、テレビが私の音声を認識してどの“Bill”に話しかけたいのかを理解してくれる...云々。
この人、野獣のように吼える癖があるんですか? とりあえず、Via Voice を売却したIBMとはスタンスが違う、という点は理解できました。
付記8:
11/6:国際化対応については、Visual Studioの方が、GNU + CodeBlocks等より、遥かに良心的でしょう。しかし、少なくともプログラマは、GNUを批判できない。なぜなら、オープン仕様なので。