Repo

kjana00@gmail.com

older <-

2013-06-26 01:18:29

今朝はくもり。朝ごはんはパンとサラダとソーセージ。ちょっと涼しいんだか気のせいなんだか。いつも一緒ぐらいに来てる人がなかなか来ないと不安になります……

待ち時間が長めな感じの動作検証を延々続けつつ手順書の直しだの、別の手順書に書くだけ書いたスクリプトを作り直すだの、レビュー記録を思い出したように書くだの、バグ修正だの、ブランチのまま放っておくのも引き継ぐ方が面倒臭いでしょうというんで結局あんまりやりたくなかった #ifdef-out の大量生産だの。思えば最初にメインアプリケーション側の対応がいらない形に最小限の #ifdef でもって作っておいて、それで導入しちゃっておけば良かったのよね。対外通信部分の #ifdef がちょっとうるさいぐらいで済ませられたのに。

まあ今はそうなってないんで、それなりにテストもしてるし使い続けられてもいるコードとバイナリレベルで一致するように #ifdef 切りましょうなんていう話になるわけです。そうなるとまあ、読みたくなくなるコードそのものな感じに……はぁ。バイナリ一致って言われても、同じコードをコンパイルしても毎回 cmp で同じになるわけじゃないよねっていうのはわかってたんで、どのぐらい一致してるか考えるところからスタート。結局、objdump -dt の結果が一致するぐらいとしてみた。シンボルテーブルとディスアセンブルコードの一致。同じコードからビルドしたら一致する。

……で、typedef だの enum だの、論理的には影響しないものもコンパイラが自動生成するシンボルのせいでこのレベルには影響してくるなというのを改めて思い知ってみたりする。それで多分というか絶対関係無いはずだけど #define してるシンボルまで含めて完全に機械的に対処してやったところ、最終的に何か微妙に違うところが残るという結果に。何だこれ?

大変に頭の悪いコードに直してみたりしても一致しなくて悩んだ挙句、gcc -E | sed '/^\s*$/d' の結果を眺めみてようやく理由がわかった。ロギング用のマクロに仕込まれてる __LINE__ だわ、これ。#ifdef-out してようが追加したコードの分だけ行数は増えるから、当然 __LINE__ が評価される時の行番号も変わる。つまり、元よりこれ以上一致するわけない。ぐぅ。

ということで徒労感を味わいつつ帰る。帰る途中で __LINE__ を 0 に置き換えてビルドするとかで完全に一致するのを確認してやれば良かったなというのを思い付いたりして。明日やろう……それで晩ごはんはあじのたたきととろろ昆布のつゆ。仕事場出るのが 22:00 なんてことが無ければご飯炊く余裕はありますよ、と。たれがちょっと甘めか。悪くない程度ではあるけど。で、大根は多めだよね、これ。ここまでいらないような。

後は WWW 見たりゲームしたり。ちらっと潜ってさくっと帰ってくるぐらい。指輪とか首飾りのアーティファクトがもっと出るといいのにね……特に指輪。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12