VisualStudioとの関係について | 入門者フォーラム | フォーラム

iSUS に投稿されている記事の内容や、IA プラットフォーム上でのソフトウェア開発に関するトピックを開発者同士でディスカッションできる場としてフォーラムを公開しています。

運営ルールはフォーラムの利用案内をご覧ください。
フォーラムの使い方はこちら

 
フォーラムに投稿するにはログインが必要ですログイン

VisualStudioとの関係について

メンバー投稿

10:17 AM
2016年7月15日


tetu

投稿数 8

1

ビルドは、全てIntelコンパイラ上で行うと仮定して、インストールしたベースのVisualStudioとの関係性について疑問が出てきたので、教えて下さい。

具体的には、以下の作業をしている時に疑問がわきました。
1)「VisualStudio2010+Intelコンパイラ2015」の環境。(Windows7です)
2)ビルド環境は、Intelコンパイラを使用。
3)C++11で定義されたライブラリ、をインクルードして使おうとしたが使えなかった。

これは、C++11の言語機能は対応しているが、新たに定義されたライブラリなどは使用できないものがあるorベースとなったVisualStudioに依存、私の方で何か設定を見落としているだけ・・・等など、考えられたのですが、やはりよくわかりませんでした。
Visualstudioは、関係ない話かもしれませんが、今後の開発環境選定において必要となりそうなので、教えてください。

1:18 PM
2016年7月15日


iSUS編集部 – 菅原

投稿数 206

2

tetu さん

こんにちは。
インテル・コンパイラーは、VC++が提供するC++11の機能を利用する場合デフォルトで言語機能が有効になっていますが、VC++がサポートしないC++11の機能を利用する場合、/Qstd=C++11 コンパイル・オプションが必要です。
オプションを追加して試していただけますか?

ちなみに icl がサポートする C++11 の言語機能は以下です。

インテル® C++ コンパイラーでサポートされる C++11 の機能

すがわら

9:35 AM
2016年7月19日


tetu

投稿数 8

3

菅原様、こんにちは。

色々試してみたのですが、起動したVSのバージョンに依存しているような、
結果となりました。/Qstd=C++11 コンパイル・オプションは、つけました。

やったのは、空のプロジェクトに「std::chrono::system_clock::now();」を、2つ追加して、
差の表示のみです。

[環境1:VS2010+Intel2015 しか入っていないPC]
→ビルドできない(ヘッダーが見つからないエラー)

[環境2:VS2010、2013、2015+Intel2016がインストールされているPC]
①VS2010から起動→ビルドできない(ヘッダーが見つからないエラー)
②VS2013から起動→ビルドし実行できる。
③VS2015から起動→ビルドし実行できる。

尚、海外のサイトでの議論で、「VS2010ではC++標準ライブラリヘッダーの多くが欠落している」との記述も有り、この辺が絡んでいるのではないかとも思えます。

タイトル:How to “activate” c++11 standard in visual studio 2010?
URL:http://stackoverflow.com/questions/19857263/how-to-activate-c11-standard-in-visual-studio-2010

6:39 AM
2016年7月20日


iSUS編集部 – 菅原

投稿数 206

4

Tetu さん

詳細な情報ありがとうございます。
ご指摘のように VS2013 以降には Chrono 標準ヘッダーは含まれていますが、VS2010 には含まれていません。
https://msdn.microsoft.com/ja-jp/library/hh567368.aspx
こちらにも一部の情報がありますが、VS2010 は C++0x のさわりの機能だけをサポートしていたように見受けられます。
インテル・コンパイラーの V12 あたりに相当しますね。V17 の Beta では、VS2010 の統合がサポート外になっていますので、そろそろ VS2010 の退役を考えなければいけなそうです。

インテル・コンパイラーは、独自の C++ 標準ヘッダーを持っていないため、ご指摘のような問題が生じます。
言語機能に関連する部分は提供してくれればいいんですけど、アドイン・コンパイラーとしてはそうもいかないようです。

すがわら