2007-10-01から1ヶ月間の記事一覧

 BMPファイルフォーマット

毎度C勉強会のネタ。今回はファイルの読み書きでもするべと思ってBMPファイルを取り上げてみることにした。テキストファイルを扱うのは初学者向けの本でも解説が多いのでバイナリファイルがいいだろうと思ったのだ。となると生でデータの入っているBMPがよか…

マクロ関数

たとえばint変数の値を入れ替えるマクロを考える。初めに考えるだろうマクロはこんな感じか #define SWAP(x, y) int tmp; tmp = x; x = y; y = tmp; しかし、これだとC89準拠にならない。ブロックの途中で変数の宣言ができない制限があるためだ。よって次の…

構造体の代入について

構造体は通常の変数と同じようにまとめて代入できる typedef struct Hoge_tag { int x; char y[100]; } Hoge; Hoge hoge = {0, "Hello", }; Hoge fuga; fuga = hoge; メンバに配列があっても問題なく代入可能。ちゃんとコンパイラが面倒見てくれる。 ただし…

設計とコーディング

http://d.hatena.ne.jp/Einherjar/20071006/p1 のエントリに結城さんからコメントをいただいた。元エントリはこちら http://www.hyuki.com/d/200606.html#i20060616 実際にコーディングしなければわからないことがたくさんある。それと同じように実際に本文…

今開発中のプログラムでのこと。関数が大きくなり見通しが悪いので処理を外だしした。そのたびに設計書を起こし直さなきゃならない。そのこと自体はかまわないが、設計してからコーディングせよ、と言われる。 そのこと自体も筋は通っていると思うのだが、設…

Cの型について

何度も同じネタを書いているけど、今日もプログラム関連の検索をしていると怪しい説明を見つけたので書いてみる。Cにおいて変数の型名は宣言から識別子を抜いたものである。 int a; /* 型名int */ double b;/* 型名double */ char c; /* 型名char */ これは…

Cで汎用リストコンテナの実装

Cで汎用のリストコンテナを実装することを考えてみた。とりあえず構造体は次のようなものでいいであろう。 struct List_tag { void *obj; /* 値 */ List *next; /* 次のノードを指すポインタ */ }; void *objが要素の実体を指し、それがリストでつなげていく…

飼っていた猫、ルビーが昨晩逝ってしまいました。最後にさすっている間に心臓が止まってしまったのが、昨日のことだけど、ついさっきのような、遠い過去のような変な気分です。