2006-05-10-01-ちょっとした異文化ショック - project-enigma

2006-05-10-01-ちょっとした異文化ショック

>> Site top >> weblog >> 月別アーカイブ >> 2006年05月のlog >> 2006-05-10-01-ちょっとした異文化ショック

最終更新日付:2014/01/02 00:01:00


ちょっとした異文化ショック

2006 年 05 月 10 日

初めて見たときからずっと気にはなっていたことについて書きましょう。Palmware のプログラミングをしていれば必ず使うデータベース関連の API 。オープンする時、なんかこんなふうに書くでしょ...

ref = DmOpenDatabaseByTypeCreator( 'DATA', 'memo', mode );

この、'DATA' みたいな記述。初めてこれを見た時はとにかく驚きました。誤殖か目の錯覚かと思ったくらいに。"DATA" じゃなくて 'DATA' ? なの? で、これで正しいらしいことが理解できると、どうやらこれは定数リテラルらしいぞ...ということに気付くわけです。まぁ "DATA" でも文字列リテラルの先頭ポインタなんだから「定数リテラル」なんですけどね...ま、それはそれとして。

しかし、20年以上プログラミングをやって来て、初めてみる記述...まぁ見識が狭いと言えばそれまでなんですが、とにかくこんな記述はこれまで見たことがない。いったいどんなもんじゃ? となると、当然やってみるのが普通の PC 上のコンパイラで試してみることです。でま、以下のようなのをやって見るわけですよ。

int n = 'DATA';
std::cout << "0x" << std::hex << n << std::endl;

結果、やっぱりというかご注文どおりというか、0x44415441 と出力されました。DATAという文字列の文字コードをまんま 16進で並べただけですね。なるほどなるほど。陰郎は長い間、シングルクォートで括る定数は単一文字しか使用できないものだとばかり思っておりました...ということに気づいたのはもうずいぶん前のこと。では、なんで今日ここに書くことになったのか。

それはですね。「Palm OS プログラミング 第2版」でこのことに触れている箇所を発見したからなんです。4月の始めに購入してから細々と読んでいる(SDK スタイルはやらない自分にはツラい!)のですが、その397 ページにこう書いてあったのです...

'DATA' といった複数文字の文字定数を使うことに驚くかもしれません。このような複数文字定数は、32 ビット長の数値 ( 4 つの 8 ビット長文字 ) と同等です。ほとんどの ( Mac OS プログラマ以外の ) C プログラマは、複数文字の文字定数を使いません。Palm OS API では、簡潔で読みやすい定数としてこれを利用しています。

なーるほど。この記述は Mac OS プログラミングの文化なのね。それなら陰郎が知らないのはまぁ当たり前かも。やっぱりこういうのも文化ですね...と思った次第。おしまい。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : Palm

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.