インテル(R) 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 が受け付けるプラグマ | ○ |
構造体/共用体内の無名の構造体/共用体フィールド | ○ |
GNU C++ には、ISO 標準 C にない、さまざまな非標準の機能が含まれています。本バージョンのインテル C++ コンパイラーではこれらの言語拡張の多くをサポートしています。次の表はそのリストです。詳細は、http://www.gnu.org/home.ja.html を参照してください。
g++ 言語拡張 | インテル サポート |
---|---|
C++ の最小値演算子と最大値演算子 | ○ |
Volatile オブジェクトがアクセスされるのは? | X |
ポインター・エイリアシングの制限 | ○ |
あいまいなリンク | ○ |
1 ヘッダーファイル内の宣言と定義 | X |
テンプレートの場所は? | extern テンプレートをサポート |
メンバー関数への束縛ポインターから関数ポインターを抽出 | ○ |
C++ 固有の変数、関数、型属性 | ○ |
Java 例外 | X |
推奨されていない機能 | X |
下位互換性 | X |
式文内に次の項目を置くことが禁止されていること以外は、式文はサポートされています。
動的に初期化されたローカル・スタティック変数
ローカルの非 POD クラス定義
try/catch
また、式文からの分岐は許可されず、式文はデフォルトの引数式では使用されないことがあります。式文では可変長配列が許可されなくなりました。
インテル C++ コンパイラーは、アセンブラー・コードが AT&T* System V/386 構文を使用する場合、gcc スタイルのインライン・アセンブリーをサポートします。