(Translated by https://www.hiragana.jp/)
Microsoft Visual C++ - Wikipedia

Microsoft Visual C++

マイクロソフトせいのC言語げんご、C++、C++/CLIよう統合とうごう開発かいはつ環境かんきょう

Visual C++ (マイクロソフト ビジュアル シープラスプラス;マイクロソフト ヴィジュアル シープラスプラス)とはマイクロソフトせいCC++C++/CLIよう統合とうごう開発かいはつ環境かんきょう (IDE) であり、コンパイラデバッガふくむ。通称つうしょうVCあるいはVC++MSVCなど。前身ぜんしんMicrosoft C/C++などがある。

Visual C++
開発元かいはつもと マイクロソフト
最新さいしんばん
2022 / 2023ねん4がつ11にち (13かげつまえ) (2023-04-11)
対応たいおうOS Microsoft Windows
プラットフォーム x86, x64 (WOW64)
種別しゅべつ 統合とうごう開発かいはつ環境かんきょう
ライセンス Microsoft EULA(プロプライエタリ)※無償むしょうばんゆう
公式こうしきサイト www.visualstudio.com/ja/vs/cplusplus/
テンプレートを表示ひょうじ

概要がいよう

編集へんしゅう

事実じじつじょうWindows標準ひょうじゅん開発かいはつ環境かんきょうであり、その最適さいてき性能せいのう非常ひじょうたかい。Visual C++ 7.1 (.NET 2003) からは標準ひょうじゅんC++規格きかくへの準拠じゅんきょおおきく改善かいぜんされている[1]おなじバージョンでもいくつかのエディションが存在そんざいし、以前いぜん上位じょういエディションしか最適さいてきをサポートしていなかったが、Visual C++ 2005から基本きほんてき最適さいてきはExpressをふくすべてのエディションにおいてぎょうなえるようになった。ただし、2005で導入どうにゅうされたプロファイリングにもとづく最適さいてき (Profile Guided Optimization, PGO) は上位じょういエディションのみでサポートされている。

Visual C++ 2005以降いこうVisual BasicVisual C#などのほか開発かいはつ言語げんご統合とうごうされたVisual Studioのパッケージとして販売はんばいされている。Visual C++ .NET 2003までは言語げんごべつ製品せいひんとして販売はんばいされていたが、2005以降いこうおこなわれていない。販売はんばいされているVisual Studioパッケージから機能きのう制限せいげんした無料むりょうばんのVisual C++ Express Editionが入手にゅうしゅできる。

"Visual"という名称めいしょうけられているが、Visual BasicなどとちがってRADではなく、基本きほんてきにはWindows SDK (Windows API) やMFC使用しようしてコードベースのプログラムを作成さくせいすることになる(ただしリソースエディタをもちいることで、ダイアログウィンドウやメニューの外観がいかんデザインのみを視覚しかくてきおこなうことは以前いぜんからできた)。MFCはC++専用せんようクラスライブラリであり、アプリケーションフレームワーク役目やくめになっているが、基本きほんてきにWindows APIのうすラッパーでしかないため、生産せいさんせいてんVisual BasicDelphiのようなRADにおよばない。しかし、Visual C++ 7.0 (.NET 2002) 以降いこうは、後述こうじゅつするマネージ拡張かくちょうC++あるいはC++/CLIを使用しようしてWindows Formsアプリケーション(もしくはWindows Formsコンポーネント)を開発かいはつする場合ばあいかぎって、フォームエディタをはじめとしたVisual C#VB.NETのようなRAD環境かんきょう使用しようできる。また、Visual C++ 11.0 (2012) 以降いこうは、後述こうじゅつするC++/CXを使用しようしてWindowsストアアプリを開発かいはつする場合ばあいXAMLエディタをはじめとしたRAD環境かんきょう使用しようできる。

また、旧来きゅうらいのWin32/MFCアプリケーション(もしくはDLL)に共通きょうつう言語げんご基盤きばん (CLI) のサポートを追加ついかすることで、.NET Frameworkのクラスライブラリを併用へいようするハイブリッド開発かいはつぎょうなえる。これにより、たとえばVisual C#/VB.NETで.NET基本きほんクラスライブラリを使つかって開発かいはつしたロジックライブラリや、Windows Forms/WPF使つかって開発かいはつしたGUI部品ぶひんを、Win32/MFCアプリケーションで利用りようする、という相互そうご運用うんようが(制約せいやくきではあるが)可能かのうとなっている。

Visual C++ 8.0 (2005) 以降いこう64ビット命令めいれい生成せいせい対応たいおうしている。付属ふぞくするコンパイラには、コンパイラが動作どうさする環境かんきょうおなじネイティブコードを生成せいせいするものと、32bit (x86) 環境かんきょう動作どうさして 64bit (x64またはIA-64) ネイティブコードを出力しゅつりょくするもの (クロスコンパイラ) がある。32ビット (x86) 環境かんきょうじょうであってもクロスコンパイルすることができる。Visual C++ 11.0 (2012) 以降いこうARMプロセッサけのコード生成せいせいにも対応たいおうしている。Visual C++ 14.1 (2017) 以降いこうでは、ARM64アーキテクチャのネイティブアプリケーション開発かいはつにも対応たいおうした (Visual Studio 2017 v15.9以降いこう必要ひつよう)[2]

WindowsようマルチメディアコンポーネントであるDirectX使用しようしてアプリケーション開発かいはつおこな場合ばあい必要ひつようとなるヘッダーファイルなどはWindows SDKふくまれているが、DirectX API はおもにVisual C++シリーズで利用りようされることを前提ぜんてい開発かいはつされているため、親和しんわせい非常ひじょうたかい。なお、Windows SDK 7.1までは最新さいしんのDirectX APIや各種かくしゅツールるい使用しようする場合ばあい単独たんどくのDirectX SDK(単独たんどく最終さいしゅうバージョンはJune 2010となっている)を別途べっとインストールする必要ひつようがあったが、Windows SDK 8.0以降いこうは(D3DXライブラリなどの一部いちぶのぞいて)最新さいしんのヘッダーおよびインポートライブラリファイルや各種かくしゅツールるいがWindows SDKにふくまれるようになった。

Visual Studio 2015では、AndroidおよびiOSけのモバイルアプリケーションを開発かいはつできるようになった。ビルドシステムとしてMSBuild使つかわれるが、コンパイラはMSVCではなくClang使つかわれる。

Visual C++のコンパイラは、C, C++, C++/CLI, C++/CXのソースコードを入力にゅうりょくける。

C言語げんご規格きかくかんしては、Visual C++ 9.0 (2008) SP1の時点じてんではANSI C89 (ISO C90, ISO/IEC 9899:1990) 対応たいおう[3]であり、C99C11には対応たいおうしていない(//はじまるコメントやlong long intなどは言語げんご拡張かくちょうとしてサポートされている)。Visual C++ 12.0 (2013) では、すべてではないがC99関数かんすう大半たいはん追加ついかした[4]。Visual C++ 14.1 (2017) では、C99プリプロセッサの部分ぶぶんてきなサポートが追加ついかされた (Visual Studio 2017 v15.8以降いこう)[5]。Visual C++ 14.2 (2019) では、C11/C17の必須ひっす機能きのうのサポートが追加ついかされた (Visual Studio 2019 v16.8以降いこう)[6]

C++言語げんご規格きかくかんしては、Visual C++ 9.0 (2008) SP1の時点じてんでC++98 (ISO/IEC 14882:1998) 規格きかく対応たいおうしている[7]。Visual C++ 10.0 (2010) では、auto、decltype、ラムダしきrvalue reference(右辺うへん参照さんしょう、static_assert、nullptrなど、C++11規格きかく追加ついかされた機能きのう一部いちぶ規格きかく制定せいてい先行せんこうして実装じっそうした[8]。Visual C++ 11.0 (2012) では、Strongly typed enums、Forward declared enums、Standard-layout and trivial types、Range-based for-loop などのC++11規格きかく実装じっそうした[9]。Visual C++ 12.0 (2013) では、Initializer lists、Alias templates、Delegating constructors、Raw string literals などのC++11規格きかく追加ついか実装じっそうした[10]。Visual C++ 14.0 (2015) では、constexpr、Unicode string literalsなどのC++11規格きかく追加ついか実装じっそうし、またBinary literalsなどのC++14規格きかく一部いちぶ実装じっそうした[11]。Visual Studio 2017 15.0のVisual C++ 14.1 (2017) では、C++14規格きかく追加ついか機能きのうをすべてサポートしたが、C++11規格きかく一部いちぶがサポートされていない[12]。Visual Studio 2017 15.7においてC++17規格きかく追加ついか機能きのうをすべてサポートしたが、C++11規格きかくのうちC99プリプロセッサ (N1653) がサポートされていない[13][14][15]。また、__cplusplus定義ていぎ既定きてい199711Lとなっているが、コンパイルオプション/Zc:__cplusplus指定していすることで、C++言語げんご標準ひょうじゅんモード設定せっていおうじて201402Lなどに変化へんかする[16]

おもなコンパイラの拡張かくちょう

編集へんしゅう
インラインアセンブラ
_asmや__asmキーワードによる記述きじゅつ。C++の標準ひょうじゅん規格きかくさだめられているasmぶんには対応たいおうしていない。x64/IA64では使用しようできず、別途べっとアセンブラで記述きじゅつするかぐみこみ関数かんすう代替だいたいする。
コンパイラCOM対応たいおう
#importディレクティブおよ追加ついかのクラス・関数かんすうなど。
属性ぞくせい
マイクロソフトインターフェイス定義ていぎ言語げんごMIDL属性ぞくせい直接ちょくせつC++ソースコードに記述きじゅつする機能きのう。なお、マネージ拡張かくちょうC++、C++/CLI、およびC++/CXの属性ぞくせい同様どうよう構文こうぶん使用しようする。
OpenMP
Visual C++ 2005からOpen MP 2.0に対応たいおうしている[17]。2010まではProfessional以上いじょうのエディションでのみ使用しよう可能かのうとなっていたが[18][19][20]、2012ではExpressをふくぜんエディションで使用しよう可能かのうとなった[21]
ネイティブC++でのC++/CLI構文こうぶん使用しよう
for each[22]およびoverride, abstract, sealed[23]。このうち、overrideはC++11のoverrideと同様どうよう構文こうぶんである。また、sealedはC++11のfinalキーワードに相当そうとうする(sealed自体じたいはさらにもとを辿たどればマイクロソフトはつのプログラム言語げんごC#からの由来ゆらいである)。Visual C++ 2012では、sealed、finalのうちどちらでも使つかうことができるが、標準ひょうじゅんC++クラスにはfinalを、C++/CXのrefクラス(Windowsランタイムクラス)にはsealedを使つかうことが推奨すいしょうされている[24]
Type Traits対応たいおう
__is_podキーワードなど[25]
.NET/WinRT対応たいおう
後述こうじゅつする。
その
__declspec、呼出よびだし規約きやく指定していプロパティ構文こうぶん(__declspec(property))、構造こうぞう例外れいがい処理しょり、#pragmaディレクティブ、SAL注釈ちゅうしゃく[26]など。

おもなライブラリの拡張かくちょう

編集へんしゅう
追加ついかのCRT関数かんすう
MS-DOS時代じだい由来ゆらいするもの、POSIX互換ごかんのもの、セキュリティ強化きょうかのためのものなど
コンパイラぐみこみ関数かんすう
MMX, SSE, SSE2やそのCPU命令めいれい対応たいおうするもの
stdext名前なまえ空間くうかん
hash_map, hash_setなど
msclr名前なまえ空間くうかん
C++マネージ拡張かくちょうおよびC++/CLIよう追加ついかライブラリ [27]
STL/CLR
C++/CLIでのSTLふうのライブラリ [28]
同時どうじ実行じっこうランタイム (Concurrency Runtime)
並列へいれつパターンライブラリ英語えいごばんなどから構成こうせいされる、C++11ベースの並列へいれつ処理しょりライブラリ [29]
C++ AMP
GPUなどのアクセラレータを使つかった並列へいれつ処理しょりライブラリ(言語げんご拡張かくちょうふくむ)[30]

とくに、Visual C++ 2005ではバッファオーバーフローマルチスレッドでの安全あんぜんせい向上こうじょうのため、大幅おおはばなライブラリの拡張かくちょうおこなわれた[31][32]。Cの関数かんすうにはstrcpyにたいしてstrcpy_sのように末尾まつびに_sを追加ついかした名称めいしょうのものが該当がいとうし、その大半たいはんはISO Cの標準ひょうじゅん委員いいんかいへTR 24731として提案ていあんされている。また、C++でも_sをけたメンバ関数かんすう追加ついか(std::basic_istream::readにたいして_Read_sのように)や範囲はんいチェックづけイテレータ[33]などの追加ついかおこなわれている。

なお、Visual C++ 2008にService Pack 1 (SP1) を適用てきようすると、C++0x TR1対応たいおうライブラリや、MFCでのVisual StudioふうスマートドッキングウィンドウおよびOffice 2007ふうリボンインターフェイス作成さくせいのための拡張かくちょうパッケージ(MFC Feature Pack)が追加ついかされる[34]。また、Visual C++ 2010にSP1を適用てきようすると、Direct2DやWindows Animation ManagerのMFCようラッパークラスが追加ついかされる[35]

マネージ拡張かくちょうC++

編集へんしゅう

マネージ拡張かくちょうC++ (Managed Extensions for C++Managed C++) は.NET Framework対応たいおうしたアプリケーションを作成さくせいするため、C++を共通きょうつう言語げんご仕様しようCLS準拠じゅんきょさせるために独自どくじ拡張かくちょうほどこしたものであり[36]、Visual C++ .NET 2002以降いこう搭載とうさいされている。これにたい従来じゅうらいのC++をマネージ拡張かくちょうC++と区別くべつするさいにはネイティブC++ (もしくはアンマネージC++) と[37]。1つのアプリケーションないにマネージ拡張かくちょうC++とネイティブC++のコードを混在こんざい[38]させることも可能かのうであり、従来じゅうらいのC++でかれたコードを徐々じょじょに.NETへ移行いこうしたり、あるいはの.NET言語げんごからC++でつくられたライブラリを使用しようしたり、C++コードから.NET Frameworkのクラスライブラリを活用かつようするなどといったこと(相互そうご運用うんよう)を可能かのうにしている(グルー言語げんご)。後継こうけいとなるC++/CLIの登場とうじょうにより、マネージ拡張かくちょうC++の使用しよう推奨すいしょうされなくなっている[39]。Visual C++ 2005-2013では、推奨すいしょうではあるが互換ごかんせい維持いじのため従来じゅうらいのマネージ拡張かくちょうC++のソースコードもコンパイルオプション「/clr:oldSyntax」を指定していすることでコンパイルできる[40]が、Visual C++ 2015で廃止はいしされた。

C++/CLIは(文法ぶんぽう不明瞭ふめいりょう部分ぶぶんのあった)マネージ拡張かくちょうC++にわる、CLSたすC++をもとにしたプログラミング言語げんごであり、Visual C++ 2005以降いこう搭載とうさいされている。なおC++/CLI環境かんきょうでは、従来じゅうらいのC++はアンマネージではなくネイティブ形容けいようされる。

C++/CX (component extensions) は、Windowsストアアプリ (UWPアプリ) で使用しようされるWindowsランタイム (WinRT) ライブラリを効率こうりつよく利用りようするために、C++11規格きかくをベースとして拡張かくちょうされたプログラミング言語げんごであり、Visual C++ 2012以降いこう搭載とうさいされている。なお、言語げんご構文こうぶん前述ぜんじゅつのC++/CLIとよくているが、C++/CXはC++/CLIとはちがってマネージ言語げんごではなく、ネイティブ拡張かくちょうである。そのため、従来じゅうらいのネイティブC/C++ようコードやCRTライブラリはほぼそのまま利用りようできるが、.NET Frameworkを直接ちょくせつあつかうことはできない。また、C++/CLIとはどういちソースコードない共存きょうぞんできない。Windowsランタイムコンポーネント (.winmd) をつうじてC#やVB.NETと相互そうご運用うんようすることができる。

Visual Studio 2015 Update 3以降いこうでは、C++/CX言語げんご拡張かくちょう使つかわずに、C++/WinRT英語えいごばんばれる拡張かくちょうライブラリをもちいてUWPアプリを開発かいはつすることも可能かのうとなっている[41]。C++/WinRTはC++17準拠じゅんきょコンパイラを必要ひつようとする[42]

その機能きのう特徴とくちょう

編集へんしゅう

32ビット/64ビットけのVisual C++では、C/C++のlong doubleがた互換ごかんせいのためだけにのこされており、80ビットの拡張かくちょう倍精度ばいせいどや128ビットのよん倍精度ばいせいどをサポートしない[43]

Visual C++ 2005以降いこうは/archコンパイルオプションによって、コンパイラ(オプティマイザ)は必要ひつようおうじて浮動ふどう小数しょうすう演算えんざんにFPUでなくSSE/SSE2を使つかったコードを出力しゅつりょくできるようになるが、x64のようにすべての浮動ふどう小数しょうすう演算えんざん命令めいれいがSSE2になるとはかぎらない[44]。また、Visual C++ 2010以降いこうAVX命令めいれい使用しようもサポートしている。Visual C++ 2013 Update 2以降いこうはAVX2命令めいれい使用しようもサポートしている[44]

無料むりょうばん

編集へんしゅう

Visual C++はエディションによってサポートする機能きのうちがいがあるが、プログラミング初心者しょしんしゃやアップグレード検討けんとうしゃけに、Windowsようクラスライブラリなどが付属ふぞくしない無料むりょうばんがマイクロソフトによって公開こうかいされている。無料むりょうばんといえど、バージョンアップのたびに標準ひょうじゅんサポートされる機能きのう追加ついかされており、VC 2005以降いこうではIDEのIntellisenseやデバッガなどの基本きほん機能きのうはStandardエディション以上いじょう有料ゆうりょうばんわらず、簡単かんたんなアプリケーションやライブラリを作成さくせいするには必要ひつようじゅうふんといえる。なおExpressエディションの提供ていきょうはバージョン2013までとなり、以降いこうはCommunityエディションに統合とうごうされる予定よてい[45]だったが、その撤回てっかいされ、Visual Studio 2015においてもExpressエディションが提供ていきょうされることになった[46]

Visual C++ ToolKit 2003
2003ねんにプロフェッショナルばん同等どうとう最適さいてき機能きのうのあるコンパイラ(IDEではない)が無料むりょう提供ていきょうされた。ただし、それ以前いぜんから.NET Framework SDKにスタンダードばん相当そうとうのコンパイラ(最適さいてき機能きのうし)が付属ふぞくしていた。なお、後述こうじゅつするVisual C++ 2005 Express Editionの公開こうかいともなって、現在げんざいはこちらの公開こうかい終了しゅうりょうしている。
Visual C++ 2005 Express Edition
2005ねん12月からIDEがいて無料むりょう公開こうかいされ、2009ねん3月31にち配布はいふ終了しゅうりょうした。マイクロソフトがIDE製品せいひん正式せいしきばん無料むりょう公開こうかいしたのはeMbedded Visual Toolsにつづいてこれが2さくである。なお、MFCATL付属ふぞくしていない。また、Windows APIもちいたプログラムを作成さくせいするには別途べっとWindows SDKをインストールする必要ひつようがある。
Visual C++ 2008 Express Edition
2007ねん12月18にち公開こうかい。ATLやMFCが付属ふぞくしないてんはVisual C++ 2005 Express Editionとおなじであるが、Windows SDKが標準ひょうじゅんどうこりされるようになり、Win32アプリケーションの開発かいはつ必要ひつようなWindows SDKを別途べっと用意よういする必要ひつようがなくなった。
Microsoft Visual C++ Compiler for Python 2.7
WindowsばんPython拡張かくちょうモジュールのバイナリパッケージはPythonのバージョンとCランライムライブラリのバージョンにつよ依存いぞん関係かんけいがあり、それに対応たいおうするために配布はいふされている。VC++ 2008のコンパイラに相当そうとうし、IDEは付属ふぞくしない。
Visual C++ 2010 Express
2010ねん4がつ28にち公開こうかい。Visual C++ ソリューションおよびプロジェクトがXMLベースのMSBuildを使用しようしてビルドするようになり、のVisual Studio言語げんご使用しようされるビルドシステムとおなじになった。
Visual Studio Express 2012 for Windows 8
Visual Studio Express 2012 for Windows Desktop
2012ねん9月12にち公開こうかいこんバージョンではVisual C++単独たんどく製品せいひんくなりC#VB.NETともにインストールされる。
Visual Studio Express 2013 for Windows
Visual Studio Express 2013 for Windows Desktop
2013ねん10月17にち公開こうかい
Visual Studio Community 2013
2014ねん11月13にち公開こうかい[47]。Expressエディションと比較ひかくして利用りよう規約きやくきびしくなっているが、機能きのうてきにはProfessionalばん同等どうとう。これまで有償ゆうしょうばんでしか使つかえなかったMFC、ATLも付属ふぞくする。
Visual Studio Express 2015 for Windows
Visual Studio Express 2015 for Desktop
Visual Studio Community 2015
2015ねん7がつ20日はつか公開こうかい[48]
Visual C++ Build Tools 2015
VC++ 2015のコンパイラに相当そうとうする。IDEは付属ふぞくしないがATLとMFCが付属ふぞくしている。
Visual Studio Community 2017
Visual C++ Build Tools 2017
Visual Studio Express 2017 for Windows Desktop
Build Tools for Visual Studio 2019

ほかにも、バージョン7.1までの Windows SDK (きゅうPlatform SDK) とバージョン7.1までのWindows Driver KitにもVisual C++コンパイラが付属ふぞくしていた。 またバージョン10 1511のWindows Driver KitからはEnterprise Windows Driver Kitとばれるコンパイラとう付属ふぞくするバージョンのWDKの配布はいふ再開さいかいされた。

Visual C++ Build Toolsは、ビルドサーバーや継続けいぞくてきインテグレーション (CI) とう、GUIを使用しようせずバッチ処理しょりてきにビルドをおこな環境かんきょうでの使用しよう意図いとされたものである。統合とうごう開発かいはつ環境かんきょうふく通常つうじょうのVisual Studioを補完ほかんする製品せいひんという位置付いちづけであり、Visual Studioの正規せいきユーザーが使用しようすることが前提ぜんていになっている。

製品せいひんバージョンと内部ないぶバージョン

編集へんしゅう

Visual C++の製品せいひんバージョンは、バージョン6.0までは内部ないぶバージョンとおな番号ばんごうけられていたが、2002以降いこう内部ないぶバージョンではなくリリース定年ていねんかんするようになった。なお、Visual C++にはコンパイラのバージョンをあらわ_MSC_VER および _MSC_FULL_VER というプリプロセッサ シンボルが存在そんざいする[49]が、これはVisual C++の前身ぜんしんであるMS-DOSもちいC/C++コンパイラ(通称つうしょうMS-C)からのとお番号ばんごうとなっており、コンパイラ本体ほんたいである cl.exe のファイルバージョンをあらわしている。(このようにユーザーを混乱こんらんさせかねない複数ふくすうのバージョン表記ひょうきは、Windowsと共通きょうつうするものがある。)

Visual C++バージョンの履歴りれき
製品せいひんめい 製品せいひんバージョン 内部ないぶバージョン _MSC_VER リリース 備考びこう
C Compiler 1.0 - - 100 1983ねん Latice Cをもとにした MS-DOSようコンパイラ。K&R対応たいおう
C Compiler 2.0 - - 200 Large Model 対応たいおう
C Compiler 3.0 - - 300 1985ねん K&R対応たいおう
C Compiler 4.0 - - 400 オプティマイズ強化きょうか。ソースレベルデバッガのCodeViewを付属ふぞく
C Compiler 5.0 - - 500 1987ねん ループオプティマイズ。Huge Model対応たいおう廉価れんかばんとしてQuick C 1.0
C Compiler 5.1 - - OS/2 1.0対応たいおう廉価れんかばんとして Quick C 2.0 (1989)
C Compiler 6.0 - - 600 1989ねん Windowsプログラミングには別途べっとSDKが必要ひつよう
C/C++ Compiler 7.0 - - 700 1992ねん MFCが付属ふぞくした最初さいしょのバージョン。
Visual C++ 1.0 1.0 1.0 800 1993ねん 32ビット対応たいおう
Visual C++ 1.5 1.5 1.5 800 1993ねん
Visual C++ 1.51 1.51 1.51 800 Visual C++ 2.0/4.0Pro日本語にほんごばん付属ふぞく
Visual C++ 1.52c 1.52 1.52c 800 英語えいごばんのみ。MS-DOS/Win16バイナリ(プログラム)を作成さくせいできる最終さいしゅうバージョン。
Visual C++ 2.0 2.0 2.0 900 1995ねん Windows NT対応たいおう。32ビット専用せんよう
Visual C++ 2.1 2.1 2.1 900
Visual C++ 2.2 2.2 2.2 900
Visual C++ 4.0 4.0 4.0 1000 1996ねん Windows 95対応たいおう
Visual C++ 4.1 4.1 4.1 1010 1996ねん Win32s動作どうさするWin32バイナリ(プログラム)を作成さくせいできる最後さいごのバージョン。
Visual C++ 4.2 4.2 4.2 1020 1996ねん
Visual C++ 5.0 5.0 5.0 1100 1997ねん
Visual C++ 6.0 6.0 6.0 1200 1998ねん
Visual C++.NET 2002 2002 7.0 1300 2002ねん マネージ拡張かくちょうC++のサポート追加ついか
Visual C++.NET 2003 2003 7.1 1310 2003ねん Windows 95で動作どうさするWin32バイナリ(プログラム)を作成さくせいできる最後さいごのバージョン。この製品せいひんまでは既定きてい文字もじコード設定せっていが「マルチバイト文字もじれつ使用しようする」になっている。
Visual C++ 2005 2005 8.0 1400 2005ねん Windows 98/Me/NT4で動作どうさするWin32バイナリ(プログラム)を作成さくせいできる最後さいごのバージョン。この製品せいひん以降いこう既定きていで「Unicode文字もじれつ使用しようする」に変更へんこうされている。C++/CLIのサポート追加ついか上位じょういエディションでコード分析ぶんせき/analyze使つかえるようになった[50]
Visual C++ 2008 2008 9.0 1500 2007ねん Windows 2000で動作どうさするWin32バイナリ(プログラム)を作成さくせいできる最後さいごのバージョン[51]
IA-64動作どうさするMFCを使つかうWin64バイナリ(プログラム)を作成さくせいできる最後さいごのバージョン[52]
Visual C++ 2010 2010 10.0 1600 2010ねん C++0x部分ぶぶんてき対応たいおうIA-64動作どうさするWin64バイナリ(プログラム)を作成さくせいできる最後さいごのバージョン[53]。なお、Visual C++ 2010ではC++/CLI言語げんごインテリセンス機能きのう動作どうさしない。
Visual C++ 2012 2012 11.0 1700 2012ねん (C++0xでなく)C++11部分ぶぶんてき対応たいおう開始かいし。ただし__cplusplusの定義ていぎ内容ないようは199711L(C++98をあらわす)のまま。Windowsストアアプリ対応たいおう(WinRT、C++/CX)。C++/CLI言語げんごのインテリセンスの復活ふっかつ。コード生成せいせいかんして SSE2 までの拡張かくちょう命令めいれい使用しよう(/arch:SSE2)がデフォルトになった[54][55][56]。DirectXグラフィックス診断しんだん機能きのう(Graphics Diagnostics)の追加ついか下位かいエディションでもコード分析ぶんせき使つかえるようになった。
Visual C++ 2013 2013 12.0 1800 2013ねん C++11対応たいおう強化きょうか。C99の大半たいはん対応たいおう。MFC/ATLのマルチバイトばんはバンドルされなくなった[57]。マネージ拡張かくちょうC++のコンパイルオプション (/clr:OldSyntax) を使用しようできる最後さいごのバージョン。
Visual C++ 2015 2015 14.0 1900 2015ねん C++11/C++14対応たいおう強化きょうか。リファクタリング機能きのう実験じっけんてきサポート[58]
Visual C++ 2017 2017 14.1 1910[59] 2017ねん C++11/C++14/C++17対応たいおう強化きょうかCMake対応たいおう追加ついかなど[60]。Windows XPで動作どうさするバイナリを作成さくせいできる最後さいごのバージョン[61]
Visual C++ 2019 2019 14.2 1920[59] 2019ねん C++20対応たいおう強化きょうか。OpenMP 4.0 SIMDベクトル実験じっけんてきサポート[62][63]。C++ IntelliCodeが付属ふぞく[64]。Visual Studio 2017で実験じっけんてき追加ついかされた[65]エディターないC++コード分析ぶんせき正式せいしきサポート[66]
Visual C++ 2022 2022 14.3 1930 2021ねん C++20/対応たいおう強化きょうか。C++23の部分ぶぶんてき対応たいおう[67]

ランタイムライブラリの互換ごかんせい

編集へんしゅう

Visual C++ (以下いかVC) のCRT (C Runtime) ライブラリは、コンパイルオプションによって静的せいてきリンクあるいは動的どうてきリンク選択せんたくすることができる[68]DLLおよびEXEにVCランタイムを動的どうてきリンクする場合ばあい、DLL/EXE自体じたいのファイルサイズを削減さくげんできるなどのメリットがあるが、アプリケーションの実行じっこうにはVCバージョンごとのランタイムライブラリモジュールが実行じっこう環境かんきょう必要ひつようとなる(たとえばVC2010の場合ばあいは msvcr100.dll や msvcp100.dll など)。MFC/CLR/OpenMP/C++ AMPを利用りようして作成さくせいされたDLL/EXEの場合ばあいはさらにそれぞれのランタイムライブラリが必要ひつようとなる。エンドユーザー環境かんきょうけにVCランタイムライブラリのさい頒布はんぷ可能かのう (redistributable) パッケージがインストーラー形式けいしき提供ていきょうされているが、このインストーラーにはデバッグバージョンのライブラリはふくまれない。Windowsのバージョンによっては、特定とくていのバージョンのVCランタイムのサブセットがシステムコンポーネントとしてプリインストールされている。

VCのランタイムライブラリは、バージョンごとにCRTオブジェクトのメモリ管理かんりがなされていた。そのため、ことなるバージョンのVCあいだでDLL境界きょうかいえてCRTオブジェクトの寿命じゅみょう管理かんりすることはできなかった。たとえばふるいバージョンのVCで作成さくせいされたDLLないmalloc/newしたオブジェクトを、あたらしいバージョンのVCで作成さくせいされたアプリケーションでfree/deleteしたり、ぎゃくあたらしいVCで作成さくせいされたDLLないでmalloc/newしたオブジェクトを、ふるいVCで作成さくせいされたアプリケーションでfree/deleteしたりすることは、ヒープ破壊はかいなどの実行じっこうエラーや未定義みていぎ動作どうさまね原因げんいんとなる[69]。メモリの確保かくほ解放かいほうはモジュールごとにじていなければならず、モジュールがい確保かくほ解放かいほう処理しょり公開こうかいするためにはDLL関数かんすうによるラッピングが必要ひつようとなる。

VC2015ではUniversal CRTが導入どうにゅうされ、またVC2017およびVC2019ではランタイムに破壊はかいてき変更へんこうがなくVC2015との互換ごかんせいがあるため、一定いってい条件じょうけんたされればDLL境界きょうかいえてCRTオブジェクトの寿命じゅみょう管理かんりすることができる[70][71][72][73]。Windows 10の場合ばあい、Universal CRTはシステムコンポーネントとして標準ひょうじゅんインストールされているが、それよりもまえのバージョンのWindowsではWindows Updateさい頒布はんぷ可能かのうパッケージによるシステムディレクトリへのインストール(集中しゅうちゅう配置はいち)、あるいはアプリケーションごとのローカル配置はいちなどの手段しゅだん利用りようする必要ひつようがある[74][75][76][77][78][79]

脚注きゃくちゅう

編集へんしゅう
  1. ^ Visual C++ What's New 2003 through 2015 | Microsoft Docs
  2. ^ Microsoft、「Visual Studio 2017 15.9」でArm64アプリ開発かいはつ正式せいしきサポート:64bit Armアプリの作成さくせい容易よういに - @IT
  3. ^ ANSI Conformance | Microsoft Docs
  4. ^ C99 library support in Visual Studio 2013 | C++ Team Blog
  5. ^ Microsoft C++ language and standard library conformance table | Microsoft Docs
  6. ^ C11 and C17 Standard Support Arriving in MSVC | C++ Team Blog
  7. ^ 標準ひょうじゅん C++ プログラムの作成さくせい (C++)”. MSDN ライブラリ. マイクロソフト (2007ねん11月). 2009ねん12月1にち閲覧えつらん
  8. ^ Visual C++ 2010 のしん機能きのう
  9. ^ C++11 Features in Visual C++ 11
  10. ^ Support For C++11 Features (Modern C++)
  11. ^ C++11/14/17 Features In VS 2015 RTM - Visual C++ Team Blog - Site Home - MSDN Blogs
  12. ^ Visual Studio 2017 リリース ノート
  13. ^ Visual C++ Language Conformance | Microsoft Docs
  14. ^ Announcing: MSVC Conforms to the C++ Standard | Visual C++ Team Blog
  15. ^ コンパイラの実装じっそうじょうきょう - cpprefjp C++日本語にほんごリファレンス
  16. ^ MSVC now correctly reports __cplusplus | Visual C++ Team Blog
  17. ^ Visual C++ の OpenMP
  18. ^ Visual C++ Editions (2005)
  19. ^ Visual C++ Editions (2008)
  20. ^ Visual C++ Editions (2010)
  21. ^ Visual C++ Tools and Templates in Visual Studio Editions
  22. ^ How to: Iterate Over STL Collection with for each
  23. ^ How to: Declare Override Specifiers in Native Compilations
  24. ^ sealed (C++ Component Extensions)
  25. ^ Compiler Support for Type Traits
  26. ^ SAL注釈ちゅうしゃく
  27. ^ msclr 名前なまえ空間くうかん
  28. ^ STL/CLR ライブラリ リファレンス
  29. ^ 同時どうじ実行じっこうランタイム
  30. ^ C++ AMP (C++ Accelerated Massive Parallelism)
  31. ^ CRTのセキュリティ強化きょうか
  32. ^ Safe Libraries: Standard C++ Library
  33. ^ Checked Iterators
  34. ^ Visual C++ 2008 ようの MFC Feature Pack
  35. ^ Visual Studio 2010 SP1 ようの MFC の追加ついか
  36. ^ C++ マネージ拡張かくちょうプログラミング (C++)
  37. ^ ネイティブ C++ アプリケーションのさい頒布はんぷ
  38. ^ 混在こんざい (ネイティブおよびマネージ) アセンブリ
  39. ^ /clr (共通きょうつう言語げんごランタイムのコンパイル)
  40. ^ /clr (共通きょうつう言語げんごランタイムのコンパイル) (C++)
  41. ^ C++ - C++/WinRT の紹介しょうかい
  42. ^ Introduction to C++/WinRT - Windows UWP applications | Microsoft Docs
  43. ^ Long Double がた
  44. ^ a b /arch (x86) | Microsoft Docs
  45. ^ Microsoft、“Professional”相当そうとう無償むしょうばん「Visual Studio Community 2013」を公開こうかい - まどもり
  46. ^ Visual Studio 2015 の製品せいひんラインアップを発表はっぴょう - Visual Studio 日本にっぽんチーム ブログ - Site Home - MSDN Blogs
  47. ^ ニュース - MSが「Visual Studio Community」を発表はっぴょう無償むしょうでAndroid/iOSアプリも開発かいはつ可能かのう:ITpro
  48. ^ Microsoft、統合とうごう開発かいはつ環境かんきょう「Visual Studio 2015」を正式せいしき公開こうかい - まどもり
  49. ^ 定義ていぎみマクロ
  50. ^ Visual C++ 2003 ~ 2015 のしん機能きのう | Microsoft Docs
  51. ^ Application statically linked with Visual C++ 2010 C/C++ runtime fails to launch with error ‘The procedure entry point EncodePointer could not be located in the dynamic link library KERNEL32.dll’.” (英語えいご). サポート技術ぎじゅつ情報じょうほう. マイクロソフト (2009ねん10がつ29にち). 2009ねん12月14にち閲覧えつらん
  52. ^ Breaking Changes” (英語えいご). 2009ねん12月26にち閲覧えつらん
  53. ^ Windows Server 2008 R2 to Phase Out Itanium” (英語えいご). 2010ねん5がつ11にち閲覧えつらん
  54. ^ コンパイラの判断はんだんによって32bitばんアプリケーションでも SSE2 命令めいれい使つかわれる可能かのうせいがある。
  55. ^ Breaking Changes in Visual C++ | Microsoft Docs
  56. ^ 浮動ふどう小数点しょうすうてん移行いこうかんする問題もんだい | Microsoft Docs
  57. ^ Unicode とマルチバイト文字もじセット (MBCS: Multibyte Character Set) のサポート
  58. ^ Visual Studio 2015 における Visual C++ のしん機能きのう
  59. ^ a b Visual Studioのアップデートにともない、_MSC_VER最下位さいかいけた更新こうしんされるようになっている。
  60. ^ Visual Studio 2017 (バージョン 15.0) リリース ノート
  61. ^ Visual Studio 2019 プレビューでの推奨すいしょうの C++ 機能きのう | Microsoft Docs
  62. ^ SIMD Extension to C++ OpenMP in Visual Studio | C++ Team Blog
  63. ^ /openmp (Enable OpenMP Support) | Microsoft Docs
  64. ^ Visual Studio 2019 リリース ノート | Microsoft Docs
  65. ^ New, experimental code analysis features in Visual Studio 2017 15.8 Preview 3 | C++ Team Blog
  66. ^ In-editor code analysis in Visual Studio 2019 Preview 2 | C++ Team Blog
  67. ^ https://learn.microsoft.com/ja-jp/cpp/overview/what-s-new-for-visual-cpp-in-visual-studio?view=msvc-170]
  68. ^ /MD, -MT, -LD (Use Run-Time Library) | Microsoft Docs
  69. ^ Potential Errors Passing CRT Objects Across DLL Boundaries | Microsoft Docs
  70. ^ C++ Binary Compatibility between Visual Studio 2015 and Visual Studio 2019 | Microsoft Docs
  71. ^ Visual C++ change history 2003 - 2015 | Microsoft Docs
  72. ^ CRT ライブラリの機能きのう | Microsoft Docs
  73. ^ Universal CRT へのコードのアップグレード | Microsoft Docs
  74. ^ Visual C++ 2015 以降いこうのバージョンのさい頒布はんぷ可能かのうパッケージにおけるインストールの前提ぜんてい条件じょうけん – Visual Studio サポート チーム blog
  75. ^ Visual C++ 2015 アプリケーションでの CRT ローカル配置はいちについて – Visual Studio サポート チーム blog
  76. ^ Introducing the Universal CRT | C++ Team Blog
  77. ^ Universal CRT deployment | Microsoft Docs
  78. ^ 最新さいしんのサポートされる Visual C++ のダウンロード
  79. ^ Windows での汎用はんようの C ランタイムの更新こうしんプログラム

関連かんれん項目こうもく

編集へんしゅう

外部がいぶリンク

編集へんしゅう