GCC との互換性

このトピックは、Linux* にのみ適用されます。これは C++ 固有のコンテンツです。DPC++ には適用されません。

インテル® oneAPI DPC++/C++ コンパイラーは、GNU* コンパイラー・コレクション (GCC) のほとんどのバージョンと互換性があります。リリースノートに互換バージョンの一覧があります。

このコンパイラーで作成された C 言語オブジェクト・ファイルは、GCC および C / C++ 言語ライブラリーとバイナリー互換です。インテル® oneAPI DPC++/C++ コンパイラーまたは GCC コンパイラーを使用して、オブジェクト・ファイルをリンカーに渡すことができます。

Clang ベースのフロントエンドのインテル® oneAPI DPC++/C++ コンパイラーを含むインテル® ソフトウェア製品では、icx または icpx も利用できます。

インテル® oneAPI DPC++/C++ コンパイラーは GNU* コンパイラーが提供する多くの言語拡張をサポートしています。詳細は、http://www.gnu.org/home.ja.html を参照してください。

式文内に次の項目を置くことが禁止されていることを除き、式文はサポートされています。 式文からの分岐、コンストラクター初期化子内の式文は許可されません。式文では可変長配列が許可されなくなりました。

インテル® oneAPI DPC++/C++ コンパイラーは、アセンブラー・コードが AT&T* System V/386 構文を使用する場合、GCC スタイルのインライン・アセンブリーをサポートします。

gcc との互換性保持

あるコンパイラーで生成されたオブジェクト・ファイルやライブラリーが別のコンパイラーで生成されたオブジェクト・ファイルやライブラリーとリンク可能で、生成される実行ファイルが正しく動作する場合、C++ コンパイラーは互換性を保持することができます。インテル® oneAPI DPC++/C++ コンパイラーは、GNU* コンパイラーと互換性があります。

インテル® oneAPI DPC++/C++ コンパイラーと GCC は、次の事前定義済みマクロをサポートします。

これらのマクロを定義しないようにするには、-no-gcc オプションを指定します。GCC との互換性保持 (-cxxlib) が必要な場合、-no-gcc オプションを使用しないでください。

注意

これらのマクロを定義しないと、システム・ヘッダー・ファイルのパスが使用されます。このような代替パスは、十分にテストされていないか、または互換性がないことがあります。

コンパイラーでの GCC の使用

インテル® oneAPI DPC++/C++ コンパイラーは、システム上の GNU* ヘッダーファイル (stdio.h を含む)、GNU* リンカーとライブラリーなどの GNU* ツールを使用します。そのため、システム上の GCC /G++ バージョンと互換性がなければなりません。

デフォルトでは、コンパイラーは、PATH 環境変数を基にインストールされている GCC / G++ バージョンを特定します。

システムのデフォルトの GCC / G++ バージョン以外を使用する場合は、-gcc-name または -gxx-name コンパイラー・オプションで使用する GCC / G++ バージョンを指定する必要があります。次に例を示します。

インテル® oneAPI DPC++/C++ コンパイラーのドライバーは、GCC / G++ のデフォルトバージョンまたは指定したバージョンを使用して、ヘッダーとライブラリーの場所を特定します。cxxlib オプションは GNU* C++ ライブラリーのリンクに関するもので、-gcc-name-gxx-name とは直接関係ありません。

オープンソースのツールとの互換性

インテル® oneAPI DPC++/C++ コンパイラーでは、次のオープンソース・ツールのサポートが強化されています。