2014年4月7日月曜日

開発環境

Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の7章(高度な関数)、自分で考えてみよう(p.339)を解いてみる。

その他参考書籍

自分で考えてみよう(p.339)

コード(BBEdit, Emacs)

sample339header.h

enum response_type {DUMP, SECOND_CHANCE, MARRIAGE};
typedef struct {
  char *name;
  enum response_type type;
} response;
void dump(response r);
void second_chance(response r);
void marriage(response r);

sample339.c

#include "sample339header.h"

void (*replies[])(response) = {dump, second_chance, marriage};

int main(int argc, char *argv[])
{
  response r[] =  {
    {"マイク", DUMP}, {"ルイス", SECOND_CHANCE},
    {"マット", SECOND_CHANCE}, {"ウィリアム", MARRIAGE}
  };
  int i;
  
  for (i = 0; i < 4; ++i)
    (replies[r[i].type])(r[i]);
  
  return (0);
}

Makefile

all: sample339

sample339: sample339.o sample339header.o
 cc -g -o sample339 sample339.o sample339header.o

sample339.o: sample339.c sample339header.h
 cc -c sample339.c

sample339header.o: sample339header.c sample339header.h
 cc -c sample339header.c

入出力結果(Terminal)

$ make && ./sample339
cc -c sample339.c
cc -c sample339header.c
cc -g -o sample339 sample339.o sample339header.o
マイクさんへ
残念ながら、前回のデートの結果、
再度お会いすることはないとの連絡を受けました。
ルイスさんへ、
良いお知らせです。前回のデートの結果、
お会いしたいとの連絡を受けました。至急ご連絡ください。
マットさんへ、
良いお知らせです。前回のデートの結果、
お会いしたいとの連絡を受けました。至急ご連絡ください。
ウィリアムさんへ
おめでとうございます!前回のデートの結果、
結婚を申し込みたいとの連絡を受けました。
$

0 コメント:

コメントを投稿