2007-01-03 (水)
*プリプロセッサ
下のCで書かれたプログラムの出力はどうなるでしょうか?
#define VAR(t) v_##t #define A x int main(){ int v_A=0,v_x=0; VAR(A)=1; printf("%d %d\n",v_A,v_x); return 0; }
「0 1」の出力を期待して書いていたのだけど,「1 0」と出力されます.マクロが外側から展開されるのを忘れていました.VAR(A)がv_Aになった時点で,Aをxに置き換えできないわけですね.
#define _VAR(t) v_##t #define VAR(t) _VAR(t) #define A x int main(){ int v_A=0,v_x=0; VAR(A)=1; printf("%d %d\n",v_A,v_x); return 0; }
このように書けば意図したとおりに動くようです.しかし,正直,プリプロセッサの仕様を確認してないので,常に使えるのかどうかわかりません.
そういえば,C言語の入門書ってプリプロセッサおざなりな気が.まぁ,確かにプリプロセッサはC言語ではないけれど,それでも重要な要素には変わりないわけで……(以下略)
*Cell
IBMのCell Broadband Engine Software Development Kitを見てました.
そろそろPS3のCell用の開発環境が整ってきたかなという感じもしてきますね.
開発環境がPS3の発売後に整ってくるというのもなんだかアレですが….真っ当な開発環境が中々出来ないのが問題だとSonyの中の人も言ってた気がするけど.
Cell触ってみたいな…….PS3をゲーム機として買うなんて勿体無い!というか,Cellの性能を引き出せるゲームメーカって存在するんですか?ゲーム市場はよく知らないけど.
*サイエンスチャンネル
サイエンスチャンネルのスペシャルの中にある「江戸のテクノロジー」が面白かった.