インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

GCC との互換性

このトピックは、Linux* および macOS* にのみ適用されます。

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

インテル® C++ コンパイラーで作成された C 言語オブジェクト・ファイルは、gcc および C/C++ 言語ライブラリーとバイナリー互換です。インテル® C++ コンパイラーまたは gcc* コンパイラーを使用して、オブジェクト・ファイルをリンカーに渡すことができます。インテル® C++ コンパイラーにより生成された IPO 擬似オブジェクト・ファイルまたは IPO 擬似オブジェクト・ファイルのライブラリーをリンカーに渡すには、インテル® C++ コンパイラーで提供されるリンクツールを使用します。

iccicpcifortxild、および xiar を利用できます。

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

-ffat-lto-objects コンパイラー・オプションによるリンク時の最適化は gcc との互換性のために提供されています。これは、オブジェクト・ファイルのリンクとアーカイブに ldar を使用できることを意味しますが、これらを使用するとファイル間の最適化は行われません。-fno-fat-lto-objects コンパイラー・オプションは、IPO 擬似オブジェクト・ファイルを xild でリンクし、xiar でアーカイブする場合に使用できます。

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

式文内に次の項目を置くことが禁止されていることを除き、式文はサポートされています。

式文からの分岐、コンストラクター初期化子内の式文は許可されません。式文では可変長配列が許可されなくなりました。

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

gcc との互換性保持

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

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

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

注意

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

インテル® コンパイラーでの GCC の使用

インテル® コンパイラーは、システム上の GNU* ヘッダーファイル (stdio.h を含む)、GNU* リンカーとライブラリーなどの GNU* ツールを使用します。そのため、システム上の gcc /g++ バージョンと互換性がなければなりません。例えば、システムに gcc 4.6 がインストールされている場合、icc は互換性のある機能と動作で gcc 4.6 と同様に振る舞います。

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

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

インテル® コンパイラーのドライバーは、gcc/g++ のデフォルトバージョンまたは指定したバージョンを使用して、ヘッダーとライブラリーの場所を特定します。

cxxlib オプションは GNU* C++ ライブラリーのリンクに関するもので、-gcc-name-gxx-name とは直接関係ありません。

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

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

関連情報