Intel C++ Compiler 11.0.072 (Win x64) 評価版 というのをダウンロード、試しています。

VC++9にて開発しているプログラムにICCを導入し、評価してみようとしたんですが、いろいろつまずいたので、google(日本語)で見つけにくかった点のメモを残しておきます。



1. コンパイラオプション /bigobj を指定するとリンク出来なくなる

これが入ってると、一見ビルドが進んでいるようで、

LINK : error LNK2001: 外部シンボル "wWinMainCRTStartup"
xxx.exe : fatal error LNK1120: 外部参照 1 が未解決です。


というエラーでリンク時に止まりました。新規に作成したMFCのプロジェクトに /bigobj を追加すると、やはり
EntryPointが見つからなくなるようです。

あと、どういう条件で出るかは分かりませんが、/bigobj関連な可能性があるエラーも載せて起きます。

xxx.obj : warning LNK4229: 無効なディレクティブ '/Intel(R) compiler non-linkable IL object file' が見つかりました。無視します。
xxx.obj : warning LNK4221: パブリック シンボルが見つかりませんでした。アーカイブ メンバにアクセスできません。




2. UTF-8 な ソースコードにて""で囲まれた日本語があるとエラー、または文字化けが起こる事がある

訳あってソースコードはUTF-8を使っているんですが、"" 内の日本語で、下のような内部エラーが出たりします。ただ、出るときと出ないときがあります。ダメ文字だからという訳ではないようです。

.xxx.cpp(100): 内部エラー: assertion failed: conv_string_literal: length miscalculated (shared/edgcpfe/literals.c, line 1572)

.xxx.cpp(200): エラー #913: 無効なマルチバイト文字シーケンスです。

VS2008の日本語環境では、恐らくデフォルトでシフトJISになるので、通常は問題は無いと思いますが、外部ライブラリをインクルードしてたりすると要注意です。

あと、UTF-8のままだと、コンパイル後ウィンドウとかに表示される文字が化けていたりするのを確認しました。

これらの現象は 文字コードをシフトJISに変更 すれば(一応は)回避出来るようです。

VS2008だと 「ファイル」>「保存オプションの詳細設定」 で 「Unicode (UTF-8 シグネチャ付き) - コードページ 65001」 -> 「日本語 (シフト JIS) - コードページ 932」 で変更出来ます。



3. プロパティマネージャから指定したプロパティシートの変更はすぐに反映されない

プロパティシート(ファイル.vsprops 等)を変更したら、プロジェクト(またはソリューション)を読み直さないと反映されないみたいです

複数プロジェクトにまたがったプロパティシートを使用してたりすると、場合によっては不整合が起こったりします。




4. icl.exe がビルドログに吐く「エラー」は、致命的では無いこともある

分かりにくい、というだけです。例えば、

.xxx.cpp(200): エラー #186: 符号なし整数とゼロの比較は無意味です。
      if(x >= 0) {
         ^


エラーなので、何とかしないといけなさそうなんですが、実際はリマークと同じようにコンパイラオプション /Qwd で非表示に出来ます。




5. リマークの抑制はコード中に記述出来ない (と思う)

ちゃんと調べてませんが(汗)

いつも警告レベルを最大(/W4)にしているため、やたらとリマークが出ます。

これを抑制するには、プロジェクトのプロパティで、「構成プロパティ」>「C/C++」>「コマンドライン」に以下のような追加オプションを追加します。

/Qwd:858,981,2259




開発環境: WinXP SP3 x64, VC++2008 Pro SP1 x64, Intel C++ Compiler 11.0.72 (Win x64) Pro, boost.1.36.0