Last Update 2003/10/15

Cプログラミング書法
移植性の高いプログラムを書くために

岩田 憲和/花沢 満/和佐野 哲男 共著
B5変型判 240ページ
定価2,670円(税込)
JAN9784789835329
1996年3月1日発行
[絶版2000.4.20] Cプログラミング書法
大変恐縮ですが,こちらの商品は品切れ絶版となりました.

 本書は,プログラムの開発者が再利用しやすいプログラムを作るにはどうすべきかを理由とともに示した実践書です.すなわち,再利用しやすいプログラムを作成するために,コーディングの前に考慮すべき事項と,再利用しやすいCプログラミング作法を読者に示すことを目的としています.

目次

第1章 プログラムの流通とは
 1.1 流通の目的と形態
 1.2 本書で述べる再利用
 1.3 C言語で記述されたプログラムと流通性

第2章 Cプログラムの流通を阻むもの
 2.1 再利用時に変わるもの
 2.2 言語仕様が異なる場合
 2.3 処理系定義事項が異なる場合
  2.3.1 基本型の大きさ
  2.3.2 データの表現形式
  2.3.3 処理系限界
  2.3.4 コンパイラの外部仕様
 2.4 インプリメント依存
  2.4.1 未規定および未定義
  2.4.2 実行環境
 2.5 作業者が変わると
 2.6 C言語はコンパクト
 2.7 紛らわしい記述
  2.7.1 誤記
  2.7.2 誤解しやすい記述
 2.8 複数の記法
 2.9 汎整数拡張,算術型変換と符号なし型

第3章 流通しやすいプログラムを作るには
 3.1 全体方針
 3.2 基本設計で行うこと - 実行環境に関する流通範囲を決める
  3.2.1 オペレーティングシステム
  3.2.2 入出力するデータの形式を決める
 3.3 基本設計で行うこと - 開発環境に関する流通範囲を決める
  3.3.1 受理する言語仕様
  3.3.2 基本型の大きさ
 3.4 詳細設計で行うこと - 文字セットを決める
 3.5 詳細設計で行うこと - 名称付与規則を定める
  3.5.1 名称付与規則を適用する対象を定める
  3.5.2 有効識別子長を定める
  3.5.3 名称付与規則を定める
 3.6 詳細設計で行うこと - プログラムファイルの構成を定める
  3.6.1 ヘッダとボディ
  3.6.2 入出力部の分離
  3.6.3 ヘッダファイル群の構成
 3.7 詳細設計で行うこと - 書式を定める
 3.8 詳細設計で行うこと - 型名の使い方を定める
 3.9 コーディングで守ること
  3.9.1 対処方法を定める
  3.9.2 処理系限界を定める
  3.9.3 情報を保存する
  3.9.4 コーディング規約を守る

第4章 ANSI準拠コンパイラ間の流通
 4.1 ANSI仕様準拠のコンパイラと言っても
 4.2 基本型の大きさに依存しないプログラムにするために
  4.2.1 int型に格納できる値の範囲
  4.2.2 整数定数
  4.2.3 unsigned short型
  4.2.4 unsigned型とlong型の算術演算
 4.3 long型のサイズに依存しないために
  4.3.1 long型に格納できる値の範囲
  4.3.2 整数定数の型
  4.3.3 unsigned型とlong型の算術演算
 4.4 流通性の高いプログラムを作るための前処理指令の書き方
  4.4.1 #if,#else,#endifの書き方
  4.4.2 #if,#elifの制御式
  4.4.3 ヘッダの記述内容
  4.4.4 #includeの仕方
  4.4.5 ヘッダの名前
  4.4.6 マクロの名前
  4.4.7 関数形式マクロの定義
  4.4.8 オブジェクト形式マクロの定義
  4.4.9 マクロの置換
  4.4.10 関数マクロの実引数
 4.5 流通性の高いプログラムを作るための宣言の書き方
  4.5.1 識別子の名前
  4.5.2 型の指定方法
  4.5.3 列挙型の宣言
  4.5.4 constとvolatile
  4.5.5 オブジェクトの宣言
  4.5.6 配列の宣言
  4.5.7 構造体・共用体の宣言
  4.5.8 ビットフィールド
  4.5.9 紛らわしい宣言
 4.6 関数の定義の書き方
  4.6.1 関数の頭部
  4.6.2 仮引数の宣言
  4.6.3 仮引数の結合
 4.7 流通性の高いプログラムを作るための文の書き方
  4.7.1 数値
  4.7.2 除算・乗余算
  4.7.3 符号なし型とビット単位の演算
  4.7.4 変数は値を設定してから使う
  4.7.5 関数の呼び出し
  4.7.6 制御式
  4.7.7 ブロック
  4.7.8 goto
  4.7.9 ライブラリ関数
  4.7.10 紛らわしい式
 4.8 やってはならない前処理指令の書き方
  4.8.1 ヘッダ名の文字
  4.8.2 マクロの実引数
  4.8.3 #if,#elifの制御式
  4.8.4 #,##演算子
  4.8.5 #pragma
  4.8.6 マクロの名前
  4.8.7 マクロの置換要素の並び
 4.9 やってはならない宣言の書き方
  4.9.1 型修飾子の指定
  4.9.2 構造体・共用体
  4.9.3 関数ブロック外で宣言する変数
  4.9.4 関数
  4.9.5 void型
 4.10 やってはならない関数の定義の書き方
  4.10.1 式の値
  4.10.2 ポインタの型変換
  4.10.3 ポインタの減算
  4.10.4 評価順序
  4.10.5 sizeof演算子,アドレス取得演算子
  4.10.6 自動変数存在期間
  4.10.7 文字定数

第5章 K&RとANSI間の流通
 5.1 Cコンパイラは一つではない
  5.1.1 K&RとANSIの仕様差の概要
  5.1.2 第5章の規約の見方
 5.2 ANSIで作成したプログラムをK&Rでも動かすための前処理指令の書き方
  5.2.1 選択に関連する前処理指令
  5.2.2 コンパイラに依存する前処理指令
  5.2.3 前処理用演算子
  5.2.4 #includeのファイル形式
  5.2.5 #lineの形式
  5.2.6 マクロの再帰的定義
  5.2.7 # 演算子
  5.2.8 ## 演算子
 5.3 ANSIで作成したプログラムをK&Rでも動かすための宣言の書き方
  5.3.1 記号
  5.3.2 型修飾子
  5.3.3 型指定子
  5.3.4 接尾語
  5.3.5 拡張表記
  5.3.6 文字定数
  5.3.7 文字例
  5.3.8 ワイド文字定数・ワイド文字列リテラル
  5.3.9 外部変数
  5.3.10 配列,構造体,共用体の初期化
  5.3.11 関数型,配列型の型定義
 5.4 ANSIで作成したプログラムをK&Rでも動かすための関数の書き方
  5.4.1 関数の宣言と定義
  5.4.2 関数の引数の個数
  5.4.3 関数へのポインタ型の仮引数
  5.4.4 構造体,共用体を引数,戻り値とする関数
 5.5 ANSIで作成したプログラムをK&Rでも動かすための文の書き方
  5.5.1 単項+演算子
  5.5.2 定数式で利用する演算子
  5.5.3 構造体・共用体の代入
 5.6 K&Rで作成したプログラムをANSIで動かすために
  5.6.1 識別子名
  5.6.2 型指定子
  5.6.3 外部名の宣言
  5.6.4 マクロ名
 5.7 K&RとANSIで動作が変わらないようにするには
  5.7.1 unsigned short,unsigned char
  5.7.2 231以上の整数定数
  5.7.3 case名札の型
  5.7.4 シフト演算に伴う型変換
  5.7.5 マクロの実引数
  5.7.6 関数形式マクロの仮引数