gcc* との互換性

インテル(R) C++ コンパイラーで作成された C 言語オブジェクト・ファイルは、GNU* gcc* コンパイラーと glibc* (GNU C 言語ライブラリー) とバイナリー互換です。インテル・コンパイラーまたは gcc コンパイラーを使用して、オブジェクト・ファイルをリンカーに渡すことができます。しかし、リンカーにインテル・ライブラリーを正確に渡すには、インテル・コンパイラーを使用してください。

インテル C++ コンパイラーは GNU コンパイラーが提供する多くの言語拡張をサポートしています。

C 言語に対する gcc 拡張機能

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 が受け付けるプラグマ
構造体/共用体内の無名の構造体/共用体フィールド

C++ 言語に対する g++ 拡張機能

GNU C++ には、ISO 標準 C にない、さまざまな非標準の機能が含まれています。本バージョンのインテル C++ コンパイラーではこれらの言語拡張の多くをサポートしています。次の表はそのリストです。詳細は、http://www.gnu.org/home.ja.html を参照してください。

g++ 言語拡張 インテル
サポート
C++ の最小値演算子と最大値演算子
Volatile オブジェクトがアクセスされるのは? X
ポインター・エイリアシングの制限
あいまいなリンク
1 ヘッダーファイル内の宣言と定義 X
テンプレートの場所は? extern テンプレートをサポート
メンバー関数への束縛ポインターから関数ポインターを抽出
C++ 固有の変数、関数、型属性
Java 例外 X
推奨されていない機能 X
下位互換性 X

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

また、式文からの分岐は許可されず、式文はデフォルトの引数式では使用されないことがあります。式文では可変長配列が許可されなくなりました。

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