ああめんどくさい

long doubleって何バイトなの? sizeof(FILE)っていくつ? 調べようと思えばなんてことはないことを調べるのが面倒。どうにかしてくれ、おまえらコンピュータだろう?

そんなあなたの素朴かつ誠実な疑問に応えるためのスクリプトがcprintf.shだ。

 # cprintf.sh 'sizeof(FILE)'
sizeof(FILE)=148(0x94)
 # cprintf.sh -i stdlib.h -i sys/time.h -p 'struct timeval tv;gettimeofday(&tv, NULL);' \
  tv.tv_sec tv.tv_usec
tv.tv_sec=1080281038(0x4063c7ce)
tv.tv_usec=855943(0xd0f87)
 # cprintf.sh -p '#define rdtsc(a) asm("rdtsc":"=A"(a))' -p 'long long a=0;' -p 'rdtsc(a);' \
  '(unsigned int)(a>>32)' '(unsigned int)a&0xffffffff'
(unsigned int)(a>>32)=2433(0x981)
(unsigned int)a&0xffffffff=-161508906(0xf65f91d6)

printfのフォーマット文字列が%d(%#x)に固定されているのがちょいと問題であることがうかがえる。オプション増やそうかな…

(追記) 2004-03-26 15:32

別のやり方を書きました。人それぞれ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です