C

最近Cがオモシロイ。あのプリミティブな言語を使って処理の抽象化とかを考えているとけっこうハマる。いろいろテクニックがあるんだなぁと感心しきり。
しっかし、OOっぽい作り方をしようとするとどうやってもネストした構造体のキャストに突き当たるんだけど、キャストをミスると吹っ飛ぶのはスリリングすぎ。Javaだったらコンパイルエラーで済むのに。

#と##

プリプロセッサのディレクティブ'#'と'##'について。
これ、結構凝った(悪く言えば変な)作りにしたいときに使える可能性大。
http://wisdom.sakura.ne.jp/programming/c/c42.html

ofsetof

offsetofなんて一回も使ったことない。
http://www.hidecnet.ne.jp/~sinzan/tips/c/tip0003a.htm
マクロ定義を見ると、結構へーって感じ。

#define offsetof(st,memb) ((int)(&( ((st*)0)->memb )))

以前見つけたCでのOOの作り込みについて(id:bopperjp:20050701#p3)のサイトでも、リフレクションを使うときは、offsetofを使うとか書いてあった。そのときは↑の#とか##とかも必須だな。

GC

これいいよ。こんなに易しいレベルのGCの説明なんて他にない。
この人の書いた本(センス・オブ・プログラミング! 抽象的に考えること・データ構造を理解すること)は買ったことがあって、Cに関しては素晴らしい知識を持ってる。でも、なんかJavaでのOOの使い方が「あれ?」って感じに思う。なにがどう「あれ」なのかは上手く説明できないけど。
http://kmaebashi.com/programmer/devlang/array.html