本書、「C/C++ ランゲージ・リファレンス」では、C および C++ プログラム言語の構文、セマンティクス、および IBM インプリメンテーションについて説明します。プログラム言語の 完全な仕様は構文とセマンティクスから構成されますが、言語仕様の準拠するインプリメンテーションは、 言語拡張のため、それぞれ異なる可能性があります。C および C++ の IBM インプリメンテーションは、 プログラム言語の基本的な性質を立証するものであると同時に、 プログラミング手法における 実用面の配慮と進歩を反映しています。C および C++ の言語拡張機能は、絶 えず変化している現代のプログラミング環境のニーズを反映しています。
このリファレンスの目的は、C 言語および C++ 言語について説明し、また移植性を強調するプログラミング・スタイルの 使用を促進することにあります。Standard C という語句は、C 言語、プリプロセッサー、およびランタイム・ライブラリーの現行の正式定義を表す固有の用語です。同じ命名規則が、C++ 言語にもありま す。 このリファレンスでは、Standard C および Standard C++ に準拠するインプリメンテーションについて説明します。また、コンパイラーでは以前の言語レベルもサポートされます。
本書では、K&R C という用語を、C 言語と、 Brian Kernighan および Dennis Ritchie によって作成されて、C についての ISO 標準が決まる前に使用されていた、一般に受け入れられている拡張機能とを表す場合に使用しています。
説明の範囲が深いレベルに及ぶため、これまでに C またはその他のプログラム言語についてある程度経験していることが前提になります。本書は、良質のプログラムを 作成するために役立つ各言語インプリメンテーションの構文およびセマンティクスを読者に提供することを目標にしています。プログラミング・スタイルの 特定の規則が秩序立ったプログラムの作成に役立つものであっても、コンパイラーはその規則を強制しません。
言語仕様に厳密に準拠するプログラムは、異なる環境間で最大の移植性を発揮します。理論上、標準に準拠した、 あるコンパイラーで正しくコンパイルされるプログラムは、 他のすべての標準準拠のコンパイラーの下でも、ハードウェアの差異が許す範囲内で、正確にコンパイルされ、作動します。言語インプリメンテーションによって提供される言語への拡張機能を正しく活用したプログラムは、そのオブジェクト・コードの 効率性を向上させることができます。
本書で説明する C および C++ 言語は、以下の標準に基づいています。
本書で説明する C 言語は、C99 と整合性があり、XL C/C++ がサポートするフィーチャーを文書化しています。コンパイラーは、標準で指定されているすべての言語フィーチャーをサポートします。また、この規格では、ランタイム・ライブラリーのフィーチャーも指定していることに注意してください。 これらのフィーチャーは、現行のランタイム・ライブラリーおよびオペレーティング環境ではサポートされないことがあります。
本書で説明する C++ 言語は、Standard C++ と整合性があり、XL C/C C++ でサポートされるフィーチャーを文書化します。