はじめての C

[Learning GNU C]

9.6. 制約型 識別子 restrict type qualifier

思うに、これは ポインタを 使った なんらかの 実装であって、特定した ポインタが メモリの ある区域のみの ポインタで あることを コンパイラへ 知らせる。 これを 知っていることで より効率的な コードが できると 考えられる。

9.7. typedef

typedef は 他 (の キーワード) とは まったく 異なり 変数の型に 新しい名前を つけるのに 使われる。 それを 使うのには 主に 2つ 理由が ある。 もっとも 一般的なのは 定義した 構造体に 名前を つけることで、その結果 通常のように struct という キーワードを 前に つけずに 新しい データ型を 使うことが できる。

typedef を 使う 2つ目 (の 理由) は 互換性 compatibility だ。 そう、32 bit の 数字を 記憶させたいと する。 仮りに int (型) を 使ったとして それが どの機械でも 32 bit だとは 保証されない。 これを 切りぬけるため 新しい型で 正確な サイズを とる typedef を 使用するよう プリプロセッサに 指令することが できる。

Example 9-2. battleship.c

#include <stdio.h>

/* 形式、座標上の位置、装備 (ミサイル) */
struct _ship {
int type;
int x;
int y;
int missilies;
};

typedef struct _ship ship;

int
main()
{
ship battle_ship_1;
ship battle_ship_2 = {1, 60, 66, 8};

battle_ship_1.type = 63;
battle_ship_1.x = 54;
battle_ship_1.y = 98;
battle_ship_1.missilies = 12;

/* 実際に 使う コードが ここに 書かれる */

return 0;
}