パスワードを忘れた? アカウント作成
648593 journal

dragonetの日記: 実装より説明する時間の方が圧倒的に長いという罠

日記 by dragonet

★下のにしても卒業研究にしても。

★さてひとつのグラフに可変個のデータ(線)を表示できるようになったが、
データ毎にタイトルをつけないと格好が悪い。
これを実現するためにgnuplotに渡すべき文字列は

plot '-' title "タイトル1", '-' title "タイトル2"...

というフォーマットである。
まぁラッパライブラリ内の実装としては

fprintf(fpGpt, "'-' title \"%s\"" タイトル);

を反復する形で渡していく事になる。
このタイトルを関数の呼び出し側で指定する方法が面倒である。
そりゃ"タイトル1"、 "タイトル2"って表示させるのは簡単だが、
ちゃんと意味のある文字列をデータ毎に表示したいとする。

可変長引数は呼び出し側では固定個数で記述するものであるから、
今回の要件には向いていない。というか無理。
「呼び出し側の可変長」というのが今回の脳内朝まで生テレビの議題になった。

例えばセパレータで区切ったひとつの文字列を渡すのが良いのか。
文字列を生成したり解釈したりするのは好きではないのだけど。

それとも静的な可変長配列にタイトル文字列を貯めて実行用関数を起動すると
それまでに貯めたタイトル個数分のデータを表示させるとか。

★色々思考をめぐらして煮詰まっていたが、フラフラ歩いている時に
charポインタ配列を渡せばいいじゃんと思いついた(思い出した)
最後の要素をNULLにすればタイトル配列の終わりが分かるし、
表示するデータの個数を指定しなくてもよくなる。

# 個人的に「真実」が重複する可能性のあるインタフェイスは好きじゃない。

付け焼刃な技法に走りすぎて単純な解決策が最初に思い浮かばないのがだめぽ。
よく使っているじゃないか。"main(int argc, char** argv)"なんて。

面倒な事に取り掛かる前にフラフラする時間も結構大切であるな。

# そもそも同時に表示して認識できる線なんて高々10本程度だろう。
# あんまりスイスアーミーナイフに頼るのもどうかと。

# とはいえ、まさにallocaが二重に活躍できるコンテキストだな。
# こんなチャンスは滅多にない(w
# alloca版のstrdupはマクロで実装せざるを得ないのが悲しいが。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...