まえがき

本書は,弊社のシステム上で Compaq C プログラミング言語を使用するための参照情報について説明します。 Compaq C は,OpenVMS VAXシステム, OpenVMS Alphaシステム,および Tru64 UNIXシステム用の ISO/ANSI 規格に準拠した C コンパイラです。Tru64 UNIX は Alpha プロセッサ上で動作します。

Compaq CはISO (国際標準化機構)のC規格(ISO 9899:1990 [1992]),以前の『American National Standard for Information Systems-Programming Language C』(ドキュメント番号: X3.159-1989)に準拠しています。コマンド行オプションを使用することにより, コモン仕様の C 言語 (Kernighan と Ritchieの C 言語) および VAX C を含む旧形式の C 言語との適合性を有する Compaq Cを使用することができます。

本書は,American National Standard による C プログラミング言語用の Information Systems X3J11 委員会の規格 (本書では ANSI C 規格と呼ぶ)に基づいています [1]。 本書では,すべてのライブラリ関数と ANSI C 規格に対する C 言語機能拡張についても説明しています。


[1] 弊社は American National Standard Programming Language C から文書の全体または一部を引用させていただいたことについて,CBEMA および Accredited Standards Committee X3 に謝辞を申し上げます。

対象読者

本書は,Compaq C (以前の DEC C)に関する参照情報を必要とするプログラマを対象にしています。 本書ではタスク指向またはプラットフォーム固有の情報についてはほとんど触れていません。 こういった情報については,プラットフォームに固有のCompaq Cのマニュアル(OpenVMSシステム用のユーザーズ・ ガイドおよびオンライン・ヘルプ,またはTru64 UNIXシステム用のプログラミング・ ガイドおよびリファレンス・ページ)を参照してください。

ANSI規格の目的

ANSI C規格は,C言語の仕様が明確でないために発生する問題を処理することを目的として, プログラム開発者とC言語に精通したユーザから構成される委員会によって作成されました。 このような問題は主として,異機種のマシン間でのプログラムの移植性に関連するものでした。 この委員会では, 構文と意味があいまいな領域,または確定していない領域についてC 言語を分析し,正確な定義のみをC言語構造に採用しました。その結果, 不明瞭な点がなくなり,マシンに依存しない定義になりました。

ANSI C規格には,次のように記述されています。

「形式を指定し,Cプログラミング言語で表現するプログラムの解釈を確立します。ANSI C 規格の目的は,さまざまなコンピューティング・システム上におけるC 言語プログラムについての移植性,信頼性,保守性および効果的な実行を促進することです。 」

ANSI C規格では以下の項目について明記しています。

ANSI C規格では以下の項目については明記していません。

新しい機能と変更された機能

本書は,Compaq Cバージョン6.5の以下の新しい言語機能を反映して改訂されました。

本書の構成

本書は,以下に示す章および付録から構成されています。

第1章では,C言語の要素について説明します。

第2章では,C言語の基本的な概念について説明します。

第3章では,C言語のデータ型および型修飾子について説明します。

第4章では,Compaq Cで使用する識別子の宣言について説明します。 この章では, 定数,変数,構造体,共用体,ポインタ,および配列の宣言について説明します。

第5章では,関数呼出し,関数の宣言, 関数定義, 関数の仮引数,および関数の実引数について説明します。

第6章では,C言語で構築できる式の種類について説明します。 単項演算子,2項演算子,条件演算子,1次演算子,および後置演算子を含むC 言語で使用できる演算子の有効性についても説明します。

第7章では,フロー制御,条件付き実行, ループ設定, および割込みを行うC文について説明します。

第8章では,C前処理命令およびあらかじめ定義されたマクロの使用目的について説明します。

第9章では,ヘッダ・ファイルにより用意されたANSI C 標準ライブラリの関数,マクロ,および型について説明します。

付録 Aでは,C言語構成に関するすべての構文をまとめて示します。

付録 Bでは,ANSI C 規格に対する拡張や例外を含む, Compaq CのANSI規格に準拠した範囲について説明します。

付録 Cでは,ASCII文字集合の各文字に対するASCII の8進数,10進数,および16進数値を記載します。

付録 Dでは,コモンC適合オプションを使用して Compaq CがサポートするコモンC の言語機能拡張を記載します。

付録 Eでは,VAX C適合オプションを使用して Compaq CがサポートするVAX Cの言語機能拡張を記載します。

関連資料

次は,Compaq C のプログラミングを行う際に役に立つ資料です。


[2] Brian W. Kernighan and Dennis M. Ritchie,『The C Programming Language』(Englewood Cliffs, New Jersey: Prentice Hall, 1988).

本書で使用する表記法

本書では,以下の表記法を使用します。

表記法 意味
OpenVMS システム 特に断らないかぎり, OpenVMS VAX および OpenVMS Alpha システムのことを表します。
<Return> <Return>は端末上のReturnキーを1回押すことを表します。
Ctrl/X Ctrl/X は,Ctrlキーを押したまま指定の端末文字キー(X)を押すことを表します。
float x;
 .
 .
 .
x = 5;
垂直方向の省略記号は,プログラムのテキストまたはプログラム出力の一部を省略していることを表します。 したがって,例中では記述内容に関連した部分しか表示されません。
option, . . . 水平方向の省略記号は,仮引数,オプション,または値を追加入力できることを表します。 ただし,省略記号の前のコンマは後続する各項目の区切り文字です。
syntaxopt オプションの構文要素は,略語 optを下に書き添えて示します。本書の各節に記載されている構文図は, 完全な構文を判断するために付録 A の参照が必要になる場合があります。たとえば,ANSI C規格の構文は潜在的な 代入式として定数を取り込みます。
記憶域クラス指定子:
auto
static
register
構文定義で別の行にある各項目は,相互に排他的な代替項目です。
auto 記憶域クラス . . .
fprintf 関数 . . .
モノスペースでの印字は, 言語キーワード,別々にコンパイルした外部関数名とファイル名, 構文サマリ,および各例で紹介する変数または識別子の参照を示します。