寄付ウィキペディアに関するお問い合わせ言語このWikipediaでは言語間リンクがページの先頭にある記事タイトルの向かい側に設置されています。ページの先頭をご覧ください。あり、コンパイラやデバッガを含む。通称VCあるいはVC++、MSVCなど。C/C++などがある。概要[編集]事実上のWindowsの標準開発環境であり、その最適化性能は非常に高い。標準C++規格への準拠度が大きく改善されている[1]。2005から基本的な最適化はExpressを含む全てのエディションにおいて行なえるようになった。上位エディションのみでサポートされている。Studioのパッケージとして販売されている。2003までは言語別製品として販売されていたが、2005以降は行なわれていない。Editionが入手できる。MFCを使用してコードベースのプログラムを作成することになる(ただしリソースエディタを用いることで、ダイアログウィンドウやメニューの外観デザインのみを視覚的に行うことは以前からできた)。BasicやDelphiのようなRADに及ばない。C#やVB.NETのようなRAD環境を使用できる。以降は、後述するC++/CXを使用してWindowsストアアプリを開発する場合、XAMLエディタを始めとしたRAD環境を使用できる。Frameworkのクラスライブラリを併用するハイブリッド開発も行なえる。Forms/WPFを使って開発したGUI部品を、Win32/MFCアプリケーションで利用する、という相互運用が(制約付きではあるが)可能となっている。以降は64ビット命令の生成に対応している。環境上であってもクロスコンパイルすることができる。以降はARMプロセッサ向けのコード生成にも対応している。v15.9以降が必要)[2]。C++シリーズで利用されることを前提に開発されているため、親和性が非常に高い。SDKに含まれるようになった。2015では、AndroidおよびiOS向けのモバイルアプリケーションを開発できるようになった。ビルドシステムとしてMSBuildが使われるが、コンパイラはMSVCではなくClangが使われる。C++/CXのソースコードを入力に受け付ける。intなどは言語拡張としてサポートされている)。全てではないがC99の関数の大半を追加した[4]。v15.8以降)[5]。v16.8以降)[6]。規格に対応している[7]。reference(右辺値参照)、static_assert、nullptrなど、C++11規格で追加された機能を一部規格制定に先行して実装した[8]。C++11規格を実装した[9]。C++11規格を追加実装した[10]。literalsなどのC++14規格を一部実装した[11]。C++14規格の追加機能をすべてサポートしたが、C++11規格の一部がサポートされていない[12]。サポートされていない[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の属性も同様の構文を使用する。2.0に対応している[17]。2010まではProfessional以上のエディションでのみ使用可能となっていたが[18][19][20]、2012ではExpressを含む全エディションで使用が可能となった[21]。sealed[23]。このうち、overrideはC++11のoverrideと同様の構文である。sealedはC++11のfinalキーワードに相当する(sealed自体はさらにもとを辿ればマイクロソフト発のプログラム言語C#からの由来である)。2012では、sealed、finalのうちどちらでも使うことができるが、標準C++クラスにはfinalを、C++/CXのrefクラス(Windowsランタイムクラス)にはsealedを使うことが推奨されている[24]。Traits対応__is_podキーワードなど[25]。#pragmaディレクティブ、SAL注釈[26]など。2005ではバッファオーバーフローやマルチスレッドでの安全性の向上のため、大幅なライブラリの拡張が行われた[31][32]。24731として提案されている。C++でも_sを付けたメンバ関数の追加(std::basic_istream::readに対して_Read_sのように)や範囲チェック付イテレータ[33]などの追加が行われている。Pack)が追加される[34]。ManagerのMFC用ラッパークラスが追加される[35]。2002以降に搭載されている。Frameworkのクラスライブラリを活用するなどといったこと(相互運用)を可能にしている(グルー言語)。後継となるC++/CLIの登場により、マネージ拡張C++の使用は推奨されなくなっている[39]。2015で廃止された。2005以降に搭載されている。C++/CLI環境では、従来のC++はアンマネージではなくネイティブと形容される。2012以降に搭載されている。言語構文は前述のC++/CLIとよく似ているが、C++/CXはC++/CLIとは違ってマネージ言語ではなく、ネイティブ拡張である。Frameworkを直接扱うことはできない。C++/CLIとは同一ソースコード内に共存できない。通じてC#やVB.NETと相互運用することができる。3以降では、C++/CX言語拡張を使わずに、C++/WinRT(英語版)と呼ばれる拡張ライブラリを用いてUWPアプリを開発することも可能となっている[41]。C++/WinRTはC++17準拠コンパイラを必要とする[42]。double型は互換性のためだけに残されており、80ビットの拡張倍精度や128ビットの四倍精度をサポートしない[43]。2005以降は/archコンパイルオプションによって、コンパイラ(オプティマイザ)は必要に応じて浮動小数演算にFPUでなくSSE/SSE2を使ったコードを出力できるようになるが、x64のようにすべての浮動小数演算命令がSSE2になるとは限らない[44]。2010以降はAVX命令の使用もサポートしている。2以降はAVX2命令の使用もサポートしている[44]。C++はエディションによってサポートする機能に違いがあるが、プログラミング初心者やアップグレード検討者向けに、Windows用クラスライブラリなどが付属しない無料版がマイクロソフトによって公開されている。2005以降ではIDEのIntellisenseやデバッガなどの基本機能はStandardエディション以上の有料版と変わらず、簡単なアプリケーションやライブラリを作成するには必要十分といえる。2015においてもExpressエディションが提供されることになった[46]。20032003年にプロフェッショナル版と同等の最適化機能のあるコンパイラ(IDEではない)が無料で提供された。SDKにスタンダード版相当のコンパイラ(最適化機能無し)が付属していた。Editionの公開に伴って、現在はこちらの公開は終了している。Edition2005年12月からIDEが付いて無料で公開され、2009年3月31日に配布を終了した。Toolsに続いてこれが2作目である。MFCとATLは付属していない。SDKをインストールする必要がある。Edition2007年12月18日公開。SDKを別途用意する必要がなくなった。2.7Windows版Pythonの拡張モジュールのバイナリパッケージはPythonのバージョンとCランライムライブラリのバージョンに強い依存関係があり、それに対応するために配布されている。2008のコンパイラに相当し、IDEは付属しない。Express2010年4月28日公開。Studio言語で使用されるビルドシステムと同じになった。Desktop2012年9月12日公開。C++単独の製品は無くなりC#、VB.NETと共にインストールされる。Desktop2013年10月17日公開。20132014年11月13日公開[47]。Expressエディションと比較して利用規約は厳しくなっているが、機能的にはProfessional版と同等。これまで有償版でしか使えなかったMFC、ATLも付属する。20152015年7月20日公開[48]。2015のコンパイラに相当する。IDEは付属しないがATLとMFCが付属している。C++コンパイラが付属していた。Kitと呼ばれるコンパイラ等が付属するバージョンのWDKの配布が再開された。等、GUIを使用せずバッチ処理的にビルドを行う環境での使用を意図されたものである。Studioの正規ユーザーが使用することが前提になっている。C++の製品バージョンは、バージョン6.0までは内部バージョンと同じ番号が付けられていたが、2002以降は内部バージョンではなくリリース予定年を冠するようになった。ファイルバージョンを表している。(このようにユーザーを混乱させかねない複数のバージョン表記は、Windowsと共通するものがある。MS-DOS用コンパイラ。