言語レベルと言語拡張
本書で説明する C および C++ 言語は、 標準および仕様にリストされている標準に基づいています。 また、 C++11 および C++14 の言語サポートにおける最新リリースでの各標準機能のサポート状況もご覧いただけます。
- C++11
- C++03
- C++98
- C99
- C89
本書では、 K & R C という用語を使用して、C 言語に加えて、C の ISO 標準化以前に使用されていた Brian Kernighan とデニス・リッチーが作成した一般的に受け入れられている拡張機能を指します。
- さまざまな呼び出しコマンド
- -qlanglvl オプション
いくつかの例外を除き、基本呼び出しコマンド xlc (C の場合) および xlc + + または xlC (C++ の場合) を使用してコンパイルすると、ほとんどすべての言語拡張機能がサポートされます。
xlc 呼び出しコマンドのデフォルト言語レベルは extc99です。これには、 C99 標準によって導入されたすべての機能と、本書で説明されているほとんどの IBM 拡張機能が含まれています。 C 拡張機能の完全なリストおよびそれらを使用可能にするためのさまざまな方法については、 「 IBM XL C 言語拡張機能」を参照してください。
xlC または xlc + + 呼び出しコマンドのデフォルト言語レベルは 拡張されています。これには、本書で説明されている IBM® 拡張機能のほとんどと、多くの C99 機能が含まれています。 C++ 拡張機能およびそれらを使用可能にするためのメソッドの完全なリストについては、 IBM XL C++ 言語拡張機能を参照してください。
コンパイルの言語レベルを制御するさまざまな方法については、「 コンパイラーの呼び出し 」および「 -qlanglvl」を参照してください。
C11 言語標準機能に関連する拡張機能
XL C/C++ は、 C11への完全な準拠につながる段階的なリリース・プロセスの一環として、現在実装されている C11 機能をサポートします。 XL C/C++ でサポートされる C11 機能の完全なリストは、 C11 互換性に記載されています。
C++11 言語標準機能に関連する拡張機能
XL C/C++ は、 C++11への完全な準拠につながる段階的なリリース・プロセスの一部として、現在実装されている C++11 機能をサポートします。 XL C++ でサポートされる C++11 機能の完全なリストは、 C++11 互換性で提供されています。
C99 言語標準機能および C11 言語標準機能をサポートするための C++ 拡張機能
C99 言語の標準および C11 言語の標準に指定されている機能のうち、C++ 言語の仕様に含まれないものが多数あります。 C++ と C99 間、または C++ と C11 間の互換性および移植性を促進するために、XL C++ コンパイラーでは、XL C コンパイラーでサポートされる C99 および C11 の機能の多くを使用可能にしています。 これらの機能は C++ 標準を拡張するため、基本言語に対する拡張機能とみなされます。 この解説書では、ある機能が C 、C99、または C11 でのみサポートされることを示すテキストが明示されていない限り、C99 および C11 の機能は XL C++ コンパイラーにも適用されます。 XL C++ でサポートされる C99 および C11 機能の完全なリストは、 Extensions for C99 互換性 および Extensions for C11 互換性で提供されています。
GNU C および GNU C++ に関連する拡張機能
移植を容易にするために、GNU C および GNU C++ フ ィーチャーに対応する特定の言語拡張機能がインプリメントされました。 これらには、 C89、 C99、 C++98、 C++03、および C++11の拡張機能が含まれています。 本書では、GNU C および GNU C++との互換性のために実装されている IBM 拡張機能を示しています。これらの完全なリストは、 GNU C 互換性のための拡張機能 および GNU C++ 互換性のための拡張機能 でのみ提供されています。
AltiVec プログラミング・インターフェースをサポートおよび拡張する拡張機能
XL C/C++ は、ベクトル・サポートが使用可能な場合、 をサポートし、 AltiVec ベクトル型を拡張します。 これらの言語拡張は、 PowerPC® プロセッサーの SIMD および並列処理 機能を活用し、関連する最適化手法を促進します。 AltiVec プログラミング・インターフェース仕様の IBM 実装は拡張実装であり、ほとんどの部分において、GNU C 実装の構文およびセマンティクスに一致します。 ここでは、ベクトル拡張機能の動作について説明するテキストに加えて、 ベクトル処理サポートの拡張にも IBM 拡張機能 AltiVec プログラミング・インターフェースへの のリストが記載されています。
ユニコードをサポートする拡張機能
ユニコード規格 は、書かれた文字と テキストに対するコード化スキームの仕様です。 ユニコード規格は、マルチリンガル・テキストのエンコードに整合性を持たせ、 矛盾を起こさずにテキスト・データを国際的に交換できるように した汎用の規格です。 ISO C および ISO C++ 委員会は、 それぞれ Unicode UTF-16 および UTF-32 文字リテラルをサポートする u-literals および U-literals の実装を承認しました。 詳しくは、 Unicode サポートの拡張 を参照してください。