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
■ やること
- 靴紐を買う
[ツッコミを入れる]