インテル® C++ コンパイラーで作成された C 言語オブジェクト・ファイルは、GNU* gcc コンパイラーおよび glibc* (GNU C 言語ライブラリー) とバイナリー互換です。インテル® コンパイラーまたは gcc コンパイラーを使用して、オブジェクト・ファイルをリンカーに渡すことができます。しかし、リンカーにインテル® ライブラリーを正確に渡すには、インテル® コンパイラーを使用してください。
インテル® C++ コンパイラーは GNU コンパイラーが提供する多くの言語拡張をサポートしています。
GNU C には、ISO 標準 C にない、さまざまな非標準の機能が含まれています。本バージョンのインテル® C++ コンパイラーではこれらの言語拡張のほとんどをサポートしています。次の表はそのリストです。詳細は、http://www.gnu.org/home.ja.html を参照してください。
gcc 言語拡張 |
インテルの |
---|---|
式中の文と宣言 |
○ |
局所的に宣言されたラベル |
○ |
ラベルの値 |
○ |
入れ子関数 |
X |
関数呼び出しの構築 |
X |
式の型に名前を与える |
○ |
typeof による型の参照 |
○ |
一般化された左辺値 |
○ |
オペランドが省略された条件文 |
○ |
ダブルワード整数値 |
○ |
複素数 |
○ |
16 進浮動小数 |
○ |
ゼロ長の配列 |
○ |
可変長配列 |
○ |
可変長引数を持つマクロ |
○ |
エスケープ改行に対する比較的ゆるい規則 |
X |
埋め込み改行の文字列 |
○ |
左辺値でない配列の添え字を取ることが可能 |
○ |
void ポインターの演算 |
○ |
関数ポインターの演算 |
○ |
非定数による初期化 |
○ |
コンパウンド・リテラル |
○ |
指定初期化子 |
○ |
Union 型へのキャスト |
○ |
Case 範囲 |
○ |
混在する宣言とコード |
○ |
関数属性の宣言 |
○ |
属性構文 |
○ |
プロトタイプと古い形式の関数定義 |
X |
C++ 形式のコメント |
○ |
識別子名中のドル記号 |
○ |
定数中の ESC 文字 |
○ |
変数の属性の指定 |
○ |
型の属性の指定 |
○ |
型や変数のアライメントの問い合わせ |
○ |
マクロと同程度の速さのインライン展開関数 |
○ |
C の式をオペランドとするアセンブラー命令 |
○ |
アセンブラー・コードで使用される名前の制御 |
○ |
指定されたレジスターに配置される変数 |
○ |
代替キーワード |
○ |
不完全な enum 型 |
○ |
文字列としての関数名 |
○ |
関数の戻りやフレームアドレスの取得 |
○ |
組み込み関数を介したベクトル命令 |
X |
GCC により提供されるその他の組み込み関数 |
○ |
特定のターゲット・コンピューター固有の組み込み関数 |
X |
GCC が受け付けるプラグマ |
○ |
構造体/共用体内の無名の構造体/共用体フィールド |
○ |
10 進の浮動小数点型 |
○ |
GNU C++ には、ISO 標準 C にない、さまざまな非標準の機能が含まれています。本バージョンのインテル® C++ コンパイラーではこれらの言語拡張の多くをサポートしています。次の表はそのリストです。詳細は、http://www.gnu.org/home.ja.html を参照してください。
式文内に次の項目を置くことが禁止されていることを除き、式文はサポートされています。
また、式文からの分岐は許可されず、デフォルトの引数式で式文を使用できないことがあります。式文では可変長配列が許可されなくなりました。インテル® C++ コンパイラーは、アセンブラー・コードが AT&T* System V/386 構文を使用する場合、gcc スタイルのインライン・アセンブリーをサポートします。