gcc* との互換性

インテル® 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 が受け付けるプラグマ

構造体/共用体内の無名の構造体/共用体フィールド

10 進の浮動小数点型

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

Note icon

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

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

Note icon

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