2004年01月21日(水) [長年日記]
■ [c] <sys/queue.h>
sys/queue.h にある LIST を使ってみたので忘れないようソースをメモ。
#include <stdio.h> #include <sys/queue.h> /* LISTに含める要素の型 */ struct list_element { LIST_ENTRY(list_element) connector; /* LISTの前後の要素の情報を 格納するフィールド */ int value; }; /* list_elementを要素に持つLISTを表す構造体my_listの宣言 */ LIST_HEAD(my_list, list_element); void print_list(struct my_list *list_head); int main() { struct my_list list_head; struct list_element a, b, c; a.value = 1; b.value = 2; c.value = 3; LIST_INIT(&list_head); LIST_INSERT_HEAD(&list_head, &a, connector); LIST_INSERT_AFTER(&a, &b, connector); LIST_INSERT_AFTER(&b, &c, connector); print_list(&list_head); LIST_REMOVE(&b, connector); print_list(&list_head); } void print_list(struct my_list *list_head) { struct list_element *p; p = LIST_FIRST(list_head); while (p != NULL) { printf("%d -> ", p->value); p = LIST_NEXT(p, connector); } printf("\n"); }
出力結果:
1 -> 2 -> 3 -> 1 -> 3 ->
LIST は末尾への要素追加が簡単にはできないので、FIFO を使いたいときは TAILQ を使うようだ。
(追記)
参考:http://vimrc.hp.infoseek.co.jp/diary/2002-08.html#2002-08-28-2 (vimrc diary)
■ [c] <sys/time.h>
sys/time.h には timerclear, timerisset, timercmp, timeradd, timersub というマクロが定義されている。
■ 生活
- 朝一番の作業はDeleteキー連打によるspamの削除。
- 家から職場の自分宛に出しておいたメイルをspamと間違え削除してしまった。ゴミ箱に残っていたからいいんだけど。間違えないようにsubjectには日本語を含めた方がよい。
- 「鍋が熱いので気をつけてください」という台詞を鍋触りながら言う店員。特殊な訓練を受けているのか。
- タイマーのプログラムやっとこさ作った。が、テストファーストではないのでまだテストできていない。どのようにテストしたものか。
- 今日の行数:2476
■ やること
- 靴紐を買う