この製品には、インテル® C++ コンパイラー、インテル® デバッガー、Microsoft* ビジュアル開発環境への統合ユーティリティー、およびコード・カバレッジ・ツールとテスト・プライオリタイゼーション・ツールが含まれています。
インテル® コンパイラーは、一般的なプロセッサー・アーキテクチャーとオペレーティング・システムを組み合わせた、3 つのプラットフォームをサポートしています。このセクションでは、本ドキュメント、インストール手順、およびサポートサイトでプラットフォームの記述に使用されている用語について説明します。
この製品には 2 つのエディションがあります。
スタンダード・エディションには、以下のコンポーネントが含まれます。
プロフェッショナル・エディションには、スタンダード・エディションのすべてのコンポーネントに加えて、以下のコンポーネントが含まれます。
プロフェッショナル・エディションの追加コンポーネントは、個別にインストールされ、それぞれリリースノートが含まれています。
注: このドキュメントで <install-dir>
として表記されているデフォルトのインストール・ディレクトリーは、C:\Program Files\Intel
です。インテル® C++ コンパイラー 10.0 は、Compiler\C++\10.0.xxx
サブフォルダーにインストールされます。
テクニカルサポートを受けたり、製品のアップデート・モジュールを入手するには、製品を登録する必要があります。製品の登録方法は、この後にある「テクニカルサポート」セクションを参照してください。
以下に、バージョン 9.1 の最初のリリースから変更または追加されたコマンドライン・オプションをリストします。これらのオプションの詳細な情報は、コンパイラーのドキュメントを参照してください。
/fast
/help [category]
/Qalias-const[-]
/QaxS
/Qdiag-<type>:<diag-list>
/Qdiag-dump
/Qdiag-enable:sv[1|2|3]
/Qdiag-enable:sv-include
/Qdiag-id-numbers[-]
/Qeffc++
/Qfp-speculation=<mode>
/Qinline-dllimport[-]
/Qinstrument-functions[-]
/Qipo-jobs:n
/Qkeep-static-consts[-]
/Qopt-class-analysis[-]
/Qpar-schedule-<keyword>[[:]n]
/Qprefetch[-]
-O3
が指定されている場合のみ有効です。本リリースでは、/QxT
が指定されている場合は、IA-64 システム上に加えて IA-32 システム上でも有効です。(IA-32 および IA-64 システムのみ。デフォルト: オフ) /Qsave-temps[-]
/Qtcheck[:<mode>]
/Qtcollect
/QxO
/QxS
推奨されていない (現在はサポートされているが、将来のバージョンでは削除される予定の) コマンドライン・オプション、または削除された (サポートが終了した) コマンドライン・オプションの詳細は、ドキュメントの「コンパイラー・オプション」 > 「推奨されていないコンパイラー・オプション (古いオプション) と削除されたコンパイラー・オプション」を参照してください。
多くのコマンドライン・オプションでは、オプション名でハイフン ("-") の代わりに、古い記述方法の下線 ("_") を使用しています。この古い記述方法は、まだ有効です。
/fast
の変更
/fast
オプションは、一般的にランタイム・パフォーマンスを向上させるオプションのセットを指定するための簡単な方法です。ドキュメントに記載されているように、オプションのセットは変更されることがあります。/fast
は、バージョン 10.0 では /QxT
を設定しますが、以前のバージョンでは /QxP
を設定します。この変更により不都合が生じる場合は、/fast
を使用する代わりに、各オプションを個別に設定する必要があります。詳細は、ドキュメントの「コンパイラー・オプション」を参照してください。
Microsoft Visual Studio .NET 2002 のコマンドラインおよびビジュアル開発環境への統合は提供していません。サポートしている Visual Studio バージョンは 2003 および 2005 です。
複数のバージョンのインテル® C++ コンパイラーをインストールすることができます。バージョン 10.0 では、複数のアップデート・バージョンを共存させることができます。バージョン 10.0 のアップデートをインストールする場合、10.0 の古いバージョンは自動的にアンインストールされません。Microsoft Visual Studio 2003 または Microsoft Visual Studio 2005 では、Microsoft Visual Studio から ([ツール] - [オプション] - [C++] - [Directories (ディレクトリー)] を選択して) 新しいバージョンを選択する必要があります。以前のバージョンをアンインストールする場合は、このバージョンをインストールする前 (推奨) でもインストールした後でもアンインストールできます。アップデートごとに、インストール・パスは異なります。
C++ クラス階層解析は、C++ クラス階層情報を使用してコンパイラーに情報を提供します。これにより、コンパイル時により多くの仮想関数が解決可能となり、パフォーマンスが向上します。
cpu_dispatch
キーワードおよび cpu_specific
キーワードで、インテル® Core™2 プロセッサーおよびストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 対応のインテル® Xeon® プロセッサー用の cpuid コード core_2_duo_ssse3
を使用できるようになりました。
このバージョンでは、メモリーおよびループの最適化を行う最適化レベル O2
と O3
で、並列化 (IA-32、インテル® 64、および IA-64 システム) とベクトル化 (IA-32 およびインテル® 64 対応システム) を統合するように最適化機構が完全に再設計されています。
次の改善により、パフォーマンスの大幅な向上が期待できます。
ループ変換 (HLO) の最適化レポートは、ループ変換 (交換) を適用できなかった原因を示し、検出されたボトルネックが、ソースの変更により排除できる場合はループ変換を推奨します。 これらのレポートは、より詳細な情報を提供し、理解しやすいように強化されています。
スタティックの検証は、複数のソースファイルに渡ってプログラムを静的に解析する新しい機能です。ユーザーコード内のさまざまな不具合や言語機能と矛盾している箇所を特定して、重要度に応じて報告します。スタティックの検証は、C/C++ および Fortran のコードを理解し、OpenMP 宣言子の解析も行います。
本リリースでは、スタティックの検証を有効にすると、リンカーが起動されず、実行ファイル、スタティック・リンク・ライブラリー、またはダイナミック・リンク・ライブラリーが生成されません。スタティックの検証により生成されるオブジェクト・ファイルは有効なものではなく、実際の実行ファイル、スタティック・リンク・ライブラリー、またはダイナミック・リンク・ライブラリーの生成には使用できません。現在の使用モデルでは、スタティックの検証は診断レポートを生成するための代替ビルドオプションとして追加されています。
スタティックの検証は、クロスファイルのプロシージャー間の最適化 (/Qipo) とともに使用することはできません。
詳細は、ドキュメントの「アプリケーションのビルド」 > 「エラー処理」 > 「コンパイル時エラー処理」 > 「スタティックの検証診断オプションの使用」を参照してください。
IDE 内でスタティックの検証サポートを有効にすると、最終的なビルドターゲット (例: 実行ファイル) は作成されません。スタティックの検証が必要な場合は、デバッグ (開発) 構成のコピーを作成して、スタティックの検証構成を別途作成することを推奨します。
<新規作成..>
を選択します。new
演算子の動作変更C++ の new
演算子では、括弧で囲まれた型の直後に配列インデックスを使用することはできません。次に例を示します。
int main()
{
char *p1 = new (char *)[20]; // array index is not allowed after ")"
return 0;
}
以前のバージョンのインテル® C++ コンパイラーでは、配列インデックスは作成する型の一部とみなされ、コンパイラーおよび対象となる互換性バージョンにより、次のいずれかとして処理されました。
new ((char*)[20])
または
(new (char *))[20]
このバージョンでは、このような誤った使用をエラーとみなすように変更されています。
インテル® C++ コンパイラーの Microsoft Visual Studio 2005 への統合は、Visual C++* のカスタムビルド規則機能をサポートしています (一部の機能は制限されています)。カスタムビルド規則を使用すると、ビルド処理にカスタムツールの呼び出しを追加できます。カスタムビルド規則に関する詳細は、Visual C++ のドキュメントを参照してください。
カスタムビルド規則は、Visual C++ プロジェクトをインテル・プロジェクトに変換する前に作成する必要があります。インテル・プロジェクトに変換した後にカスタムビルド規則を変更する場合は、Visual C++ プロジェクトに変換してから、カスタムビルド規則を変更して、再度インテル・プロジェクトに変換します。
カスタムビルド規則に対して定義されている文字列のプロパティーを変更する場合、利用可能なマクロのリストにインテル固有のマクロ ($(icInstallDir); $(icIDEInstallDir); $(icProjectExt); $(icProjectFileName) など) は含まれていません。ただし、カスタムビルド規則のプロパティー値でインテル固有のマクロを使用することはできます。指定されたマクロは正しく機能します。
インテル® C++ コンパイラーの Visual Studio 2005 への統合では、現在 Visual C++ のツールのビルド順序機能 (Visual C++ の [ツールのビルド順序] ダイアログボックスから利用可能) をサポートしていません。つまり、ビルドステップの実行順序を変更することはできません。
インテル® C++ コンパイラー Windows 版の将来のメジャーリリースでは、インテル® デバッガー (IDB) は提供されなくなります。Microsoft Visual Studio でのデバッグには影響ありません。IDB の代わりに Microsoft Visual Studio のデバッグ機能を使用してください。
詳細は、「インストール・ガイド」を参照してください。
インテル® コンパイラーは、一般的なプロセッサー・アーキテクチャーとオペレーティング・システムを組み合わせた、3 つのプラットフォームをサポートしています。このセクションでは、本ドキュメント、インストール手順、およびサポートサイトでプラットフォームの記述に使用されている用語について説明します。
「ネイティブ」とは、アプリケーションを実行するプラットフォームと同じプラットフォームでアプリケーションをビルドする (例えば、IA-32 システムで実行するアプリケーションを IA-32 システムでビルドする) ことを指します。「クロスプラットフォーム」または「クロスコンパイル」とは、アプリケーションを実行するプラットフォームとは異なる種類のプラットフォームでアプリケーションをビルドする (例えば、インテル® 64 対応システムで実行するアプリケーションを IA-32 システムでビルドする) ことを指します。すべての組み合わせのクロスプラットフォーム開発がサポートされているわけではありません。また、組み合わせによっては、オプションのツールとライブラリーをインストールする必要があります。
サポートされているホスト (アプリケーションをビルドするシステム) とターゲット (アプリケーションを実行するシステム) の組み合わせを次に示します。
ホスト\ターゲット | IA-32 | インテル® 64 | IA-64 |
---|---|---|---|
IA-32 | ○ |
○ |
○ |
インテル® 64 | ○ |
○ |
○ |
IA-64 | × |
× |
○ |
注: 上の表は、コマンドライン・ビルド環境の組み合わせを示しています。組み合わせによっては、一部の Microsoft ビジュアル開発環境では利用できません。
注:
アプリケーションで使用している機械語命令が特定のオペレーティング・システムやプロセッサーでサポートされているかどうかは、アプリケーション開発者自身の責任で確認してください。
Windows Vista では、Visual Studio 2005 のみサポートされています。それ以前のバージョンの Visual Studio はサポートされていません。Visual Studio 2005 を使用する場合は、Windows Vista にインテル® コンパイラーをインストールする前に、Visual Studio 2005 Service Pack 1 (VS 2005 SP1) と Visual Studio 2005 Service Pack 1 Update for Windows Vista (VS 2005 SP1 からリンクされています) をインストールしてください。これらのアップデートをインストールした後に、管理者権限で Visual Studio が実行できることを確認してください。実行できない場合、インテル® コンパイラーを使用できません。Visual Studio のアップデートをインストールする前に、インテル® コンパイラーの統合をアンインストールしてください。詳細は、Microsoft の Visual Studio on Windows Vista (英語) および関連ドキュメントを参照してください。
インテル® C++ コンパイラー Windows 版の次のメジャーリリースでは、Microsoft Visual C++ 6.0 および Microsoft Visual Studio 98 はサポートされなくなります。将来のインテル® コンパイラーとの互換性のために、Microsoft Visual Studio 2005 に移行してください。
error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました
このエラーは、以下の [プロジェクト プロパティ] が設定されている場合に発生します。
回避策は次のとおりです。
[プロジェクト プロパティ] - [リンカ] - [詳細] - [エントリーポイント] を [wWinMainCRTStartup] に設定する
error PRJ0019: ツールはエラー コードを返しました
この問題を回避するには、[プロジェクト プロパティ] - [ビルドイベント] - [ビルド後のイベント] で [コマンドライン] に次の 2 つのコマンドを追加してください。
mt /nologo /manifest $(TargetPath).manifest /outputresource:"$(TargetPath);#2"
C:/Winnt/System32/regsvr32 /s /c "$(TargetPath)"
IDB
) に関する制限
/Zi
をインライン展開と組み合わせて使用すると、コンパイル時間が長くなります。/Qipo、/Qip
を指定した場合や /O1
以上のオプションレベルで C++/C99
プロブラムをコンパイルする場合、インライン展開が発生します。これはデバッグ情報が生成されるためです。多くのアプリケーションでは、このコンパイラー・オプションの組み合わせで、コンパイル時間やコンパイル時のメモリー容量が増加することはありません。
Microsoft Visual Studio 2005 では、スタティック、シングルスレッド Visual C++ ライブラリー libc.lib
および libcd.lib
が削除されました。インテル® C++ コンパイラーがコマンドラインで Visual Studio 2005 を使用するように指定した場合、以前のバージョンではデフォルトだったスタティック、シングルスレッド・ライブラリーを使用してアプリケーションをビルドしようとすると、コンパイラーは警告を表示します。
icl: warning: option '/Qvc8' or higher used with '/ML[d]' is not supported
/Qvc8
は、Visual Studio 2005 とのコマンドライン統合を指定した場合、インストール時に icl.cfg
に追加されます。このオプションは、Visual Studio 2005 を使用していることを icl
コンパイラー・ドライバーに知らせます。
このオプションを使用してアプリケーションをリンクしようとすると、リンカーは libc.lib
または libcd.lib
が見つからないというエラーを表示します。次に例を示します。
LINK : fatal error LNK1104: ファイル 'LIBC.lib' を開けません
このエラーを解決するには、ランタイム・ライブラリーのスレッド/DLL フォームを指定してください。次に例を示します。
/MT
/MD
他に何も指定していない場合、Visual Studio 2005 で icl
を使用したときのデフォルトは /MT
です。
この問題は、Microsoft Visual Studio IDE からビルドされるプロジェクトにも影響します。この場合、[プロジェクト プロパティ] - [C/C++] - [コード生成] - [ランタイム・ライブラリー]
を新しい値に変更してください。
Microsoft は、Windows Vista で Visual Studio 2005 のみサポートしています。それ以前のバージョンの Visual Studio はサポートしていません。Windows Vista では、より高い権限で Visual Studio を実行する必要があります。Microsoft では、この要件を明確にするために、Visual Studio 2005 のアップデートを配布する予定です。インテルでは、Visual Studio のセッションを開始する際に、[管理者で実行] オプションを使用することを推奨します。Windows Vista での Visual Studio の使用に関する詳細は、Microsoft の Web サイト (英語) を参照してください。
Visual Studio 2005 では、インテル® C++ コンパイラーでビルドされたアプリケーションのデバッグを開始する際に、プログラムが実行されるプロセスにシステム環境変数が継承されないことがあります。特に、PATH 環境変数が見つからないと、アプリケーションは DLL にリンクされ、"Unable to locate component (コンポーネントを検出できません)" エラーとなり、実行に失敗することがあります。
この問題は、インテル® C++ コンパイラーの将来のアップデートで修正される予定です。この問題の回避方法として、[プロジェクト プロパティ] - [デバッグ] - [環境] にブランクではない値 (例えば、"x
" という文字) を設定して、[マージ環境] を [Yes] に設定します。
Visual Studio で作成したインテル® C++ プロジェクト/ソリューションをコマンドラインまたはバッチファイルからビルドする場合は、Visual Studio ランチャー、devenv.exe を使用してください。 利用可能なコマンドライン・オプションを表示するには、devenv /?
と入力してください。Microsoft ツール MSBuild および Team Build は、インテル® C++ プロジェクトのビルドには現在使用できません。
/Qc99
を使用した場合の _Complex
のコンパイルエラー Microsoft Visual Studio 2005 ヘッダーで /Qc99
オプションを使用すると、次のコンパイルエラーが表示されます。
C:/Program Files/Microsoft Visual Studio 8/VC/include/math.h(135): error: _Complex can only be used with float, double, or long double types
_CRTIMP double __cdecl _cabs(__in struct _complex _Complex);
^
この問題は、_Complex
は C99 ではキーワードですが、math.h Microsoft ヘッダーでは cabs プロトタイプの識別子として使用されるために発生します。この問題を回避するには、このヘッダーをインクルードする前後に以下のように条件を追加してください。
#define _Complex
#include <math.h>
#undef _Complex
(/Qax*)
使用時のデバッグ情報の制限/Qax[code]
を使用してコンパイルを行うと、各関数について IA-32 汎用コードと CPU 特有のコードの 2 種類のコードが生成されます。各関数のシンボルは自動 CPU ディスパッチ・ルーチンを参照して、ランタイムに実行するコードセクションを決定します。これらの関数にデバッガーのブレークポイントが名前でセットされると、ディスパッチ・ルーチンでアプリケーションが停止します。その結果、デバッグ時に予測できない動作が発生します。この問題は、インテル® デバッガーおよびインテル® コンパイラーの将来のバージョンで修正される予定です。
/Oy
オプションを使用してビルドされた IA-32 プログラムをデバッグまたはトレースバック表示できない/Oy
を使用してコンパイルを行うと、IA-32 EBP レジスターはフレームポインターではなく汎用レジスターとして使用されます。デバッガーおよびトレースバック・ハンドラーは、この方法でコンパイルされた関数への呼び出しを含むスタックから適切にスタックを戻すことができません。
IA-64 システムまたはインテル® 64 対応システムで Microsoft Platform SDK を使用してビルドを行うと、以下のようなリンクエラーが発生します。
LIBC.lib(a_str.obj) : error LNK2001: 外部シンボル __security_cookie は未解決です
[...]
LIBC.lib(a_str.obj) : error LNK2001: 外部シンボル __security_check_cookie は未解決です
[...]
この問題は、Microsoft Platform SDK のバージョン間の不一致によって発生します。インテルでは、この問題を解決するために Microsoft と作業を行っています。この問題を回避するには、以下のいずれかの方法でアプリケーションをリンクしてください。
icl hello.c /MD
icl hello.c -link bufferoverflowu.lib
icl hello.c /MT bufferoverflowu.lib
Win32 API を使用する一般的なユーザーモードのアプリケーションでは、bufferoverflowu.lib
を使用してください。Win32 API を使用できないユーザーモード・サブシステムやサービス用のアプリケーションでは、代わりに bufferoverflow.lib
を使用してください。カーネルモード・アプリケーションおよびドライバーは、bufferoverflowk.lib
にリンクしてください。
memset/memcpy
使用時のアライメントされていないアクセスエラーIA-64 システムで動作する Microsoft Windows Server 2003 の一部のバージョンでは、C ライブラリー・ルーチンの memset
および memcpy
の呼び出しは、アライメントされていないアクセス例外になります。この問題は、引数がアライメント・ベース 2 以上のデータ型へのポインターであるにもかかわらず、実際の引数がアライメントされていない場合に発生します。この問題を回避するには、引数を適切にアライメントしてください。
インテルでは、お客様からのフィードバックを非常に重視しております。http://www.intel.com/software/products/support (英語) から、本製品で提供されるツールについてのテクニカルサポートを利用したり、FAQ や製品のアップデート情報を含むテクニカル情報を入手することができます。
注: 代理店がテクニカルサポートを提供している場合は、インテルではなく代理店にお問い合わせください。
インテル® C++ コンパイラーのユーザーフォーラム、FAQ、ヒント、およびその他のサポート情報は、http://support.intel.com/support/performancetools/c/windows/ (英語) を参照してください。サポート情報全般については、http://www.intel.com/software/products/support/ (英語) を参照してください。
[Submit Issue]
リンクをクリックします。
[Product Type]
ドロップダウン・リストから [Development Environment (tools,SDV,EAP)]
を選択します。
[Product Name]
ドロップダウン・リストから [Intel(R) C++ Compiler for Windows*]
を選択します。
注: 特定の国へのアクセスを制限する必要があるソースコードを送信する場合は、ソースコードを送信する前にサポート担当者までお問い合わせください。
>> icl
w_cc_p_10.0.xxx
) をインテル® プレミアサポートの適切なフィールドにコピーします。また、問題の解決に役立つと思われる事項はすべてお伝えください。
<package ID>_README
(例: w_cc_p_10.0.xxx_README
) を参照してください。Compiler Error Source Reducer (CESR) は、C/C++ または Fortran ソースコードで構成されたテストケースの収集、縮小、特定、保護、文書化、およびバンドルを行うユーティリティーのセットです。大規模なアプリケーションからインテル® プレミアサポートに送信する小さなテストケースを抽出する場合に便利です。CESR は、インテル® レジストレーション・センターの [製品のダウンロード] からダウンロードできます。製品を選択して、バージョンのドロップダウンから [CESR] を選択します。CESR は試験的に提供されているもので、サポートは提供されておりません。CESR に関するご意見およびご感想は、インテル® プレミアサポートまでお寄せください。CESR を利用するには、Python 2.2 またはそれ以降をあらかじめインストールしておく必要があります。
インテル® コンパイラーのドキュメントおよび HTML ベースの関連ドキュメントは、ナビゲーション、キーワード検索、およびハイパーテキスト機能が利用できるコンパイル済み HTML ヘルプ (.CHM) 形式のファイルです。ブラウザーで .CHM ファイルを開けない場合、Windows エクスプローラーを使用して、Docs
ディレクトリーでファイル名をダブルクリックしてください。
各ドキュメントに簡単にアクセスできるように、ドキュメント・インデックスが提供されています。ドキュメント・インデックスは、<install-dir>Compiler\C++\10.0.xxx\Docs\Doc_Index.htm
で、インテル® C++ コンパイラーのプログラムフォルダーにあります。本リリースでは、Doc_Index.htm
ファイルで説明されているようにオンラインヘルプの構成が変更され、インストール・ガイドと入門ガイドが別になりました。『Intel® Debugger Manual』(英語) は、インテル® デバッガーのプログラムフォルダーにあります
インテル® ソフトウェア開発製品の詳しい情報については、http://www.intel.co.jp/jp/software/products/ を参照してください。
関連製品の一部を次にリストします。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む)にも一切応じないものとします。インテル製品は、医療、救命、延命措置、重要な制御または安全システム、核施設などの目的に使用することを前提としたものではありません。
インテル製品は、予告なく仕様や説明が変更される場合があります。
機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を開発の前提にしないでください。留保または未定義の機能を不適当な方法で使用すると、開発したソフトウェア・コードをインテル・プロセッサー上で実行する際に、予測不可能な動作や障害が発生するおそれがあります。 これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。
本資料で説明されているソフトウェアには、不具合が含まれている可能性があり、公開されている仕様とは異なる動作をする場合があります。現在までに判明している不具合の情報については、インテルのサポートサイトをご覧ください。
本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。本資料で提供される情報は、情報供与のみを目的としたものであり、予告なしに変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切責任を負わないものとします。ライセンス契約で許可されている場合を除き、インテルからの文書による承諾なく、本書のいかなる部分も複製したり、検索システムに保持したり、他の形式や媒体によって転送したりすることは禁じられています。
Intel、インテル、Intel ロゴ、Intel Core、Itanium、Pentium、VTune、Xeon は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2007 Intel Corporation.