Microsoft Visual C++
Microsoft Visual C++の最新ニュースをまとめて検索!
| Microsoft Visual C++ | |
|---|---|
| 開発元 | マイクロソフト |
| 最新版 | Visual C++ 2008 (2007年12月14日(日本語版)) |
| 対応OS | Windows XP/Server 2003/Vista/7 |
| プラットフォーム | x86, x64 (WOW64) |
| 種別 | 統合開発環境 |
| ライセンス | Microsoft EULA(プロプライエタリ)※無償版有 |
| 公式サイト | Visual C++ Web Site |
Microsoft Visual C++(マイクロソフト ヴィジュアル シープラスプラス)とはマイクロソフト製のC、C++、C++/CLI用統合開発環境 (IDE)であり、コンパイラやデバッガを含む。通称VCあるいはVC++、MSVCなど。前身はMicrosoft C/C++などである。
目次 |
[編集] 概要
事実上のWindowsの標準開発環境であり、その最適化性能は非常に高い。さらに、Visual C++ 7.1 (.NET 2003) からは標準C++規格への準拠度も高いことで知られている。同じバージョンでもいくつかのエディションが存在し、以前は上位エディションしか最適化をサポートしていなかったが、Visual C++ 2005から基本的な最適化は全てのエディションにおいて行えるようになった。(2005で導入されたプロファイリングに基づく最適化 (PGO)は上位エディションのみでサポートされている)
Visual C++ .NET 2003までは単体製品が販売されていたが、Visual C++ 2005以降はExpress Edition以外の単体製品は存在せず、Visual BasicやVisual C#などの他の開発言語と統合されたVisual Studioのパッケージに同梱されるようになった。
Visualという名称が付けられているが、Visual Basicなどと違ってRADではなく、基本的にはWindows SDK (Windows API)やMFCを使用してコードベースのプログラムを作成することになる(ただしリソースエディタを用いることで、ダイアログウィンドウやメニューの外観デザインのみを視覚的に行うことは以前からできた)。MFCはC++専用クラスライブラリであり、アプリケーションフレームワークの役目も担っているが、基本的にWindows APIの薄いラッパーでしかないため、生産性の点でVisual BasicやDelphiのようなRADに及ばない。しかし、Visual C++ 7.0 (.NET 2002) 以降は、後述するマネージ拡張C++或いはC++/CLIを使用して開発する場合、フォームエディタを始めとしたVisual C#やVB .NETのようなRADが使用できる。
また、旧来のMFCアプリケーションにCLIのサポートを追加することで、.NET Frameworkのクラスライブラリを併用するハイブリッド開発も行なえる。
Visual C++ 8.0以降は64bit命令の生成に対応しており、また 32bit (x86) 環境上であっても 64bit (主にx64) ネイティブコードをクロスコンパイルすることができる。
Windows用マルチメディアコンポーネントであるDirectXを使用してアプリケーション開発を行なう場合に必要となるDirectX SDKは、主にVisual C++シリーズで利用されることを前提に開発されているため、親和性が非常に高く、また最新版のSDKを利用して開発する場合にVisual C++は欠かせない。
[編集] 言語
Visual C++のコンパイラは、C, C++, C++/CLIのソースコードを入力に受け付ける。C言語規格に関しては、Visual C++ 9.0 (2008) SP1の時点でANSI C89 (ISO C90, ISO/IEC 9899:1990) 対応[1]であり、C99には対応していない。C++言語規格に関しては、Visual C++ 9.0 (2008) SP1の時点でC++03 (ISO/IEC 14882:2003) 規格に対応している[要出典]。
[編集] 主なコンパイラの拡張
- インラインアセンブラ
- _asmや__asmキーワードによる記述。C++の標準規格で定められているasm文には対応していない。x64/IA64では使用できず、別途アセンブラで記述するか組込関数で代替する。
- コンパイラCOM対応
- #importディレクティブ及び追加のクラス・関数など。
- 属性
- マイクロソフトインターフェイス定義言語MIDLの属性を直接C++ソースコードに記述する機能。なお、マネージドC++及びC++/CLIの属性も同様の構文を使用する。
- マネージ拡張
- .NET Frameworkを使用するための拡張。マネージ拡張C++を参照。
- OpenMP
- Visual C++ 2005からOpen MP 2.0に対応している[2]。Professional以上のエディションでのみ使用可能となっている[3][4]。
- ただしWindows SDKにライブラリが含まれるため、SDKインストール後はExpress、Standardでも利用可能である。
- ネイティブC++でのC++/CLI構文の使用
- for each[5]及びoverride, abstract, sealed[6]。
- Type Traits対応
- __is_podキーワードなど[7]。
- その他
- __declspec、呼出規約の指定、構造化例外処理、#pragmaディレクティブ、SAL注釈[8]など。
[編集] 主なライブラリの拡張
- 追加のCRT関数
- MS-DOS時代に由来するもの、POSIX互換のもの、セキュリティ強化のものなど
- コンパイラ組込関数
- MMX, SSE, SSE2やその他CPU命令に対応するもの
- stdext名前空間
- hash_map, hash_setなど
- msclr名前空間
- C++/CLI, マネージドC++用追加ライブラリ
- STL/CLR
- C++/CLIでのSTL風のライブラリ
特に、Visual C++ 2005ではバッファオーバーフローやマルチスレッドでの安全性の向上のため、大幅なライブラリの拡張が行われた[9][10]。Cの関数にはstrcpyに対してstrcpy_sのように末尾に_sを追加した名称のものが該当し、その大半はISO Cの標準化委員会へTR 24731として提案されている。また、C++でも_sを付けたメンバ関数の追加(std::basic_istream::readに対して_Read_sのように)や範囲チェック付イテレータ[11]などの追加が行われている。
なお、Visual C++ 2008にService Pack 1 (SP1) を適用すると、C++0x TR1対応ライブラリや、MFCでのVisual Studio風スマートドッキングウィンドウおよびOffice 2007風リボンインターフェイス(Fluent UI)作成のための拡張パッケージ(MFC Feature Pack)が追加される[12]。
[編集] マネージ拡張C++
詳細は「C++マネージ拡張」を参照
マネージ拡張C++ (Managed Extensions for C++、マネージドC++、Managed C++)は.NET Frameworkに対応したアプリケーションを作成するため、C++を共通言語仕様CLSに準拠させるために独自の拡張を施したものであり、Visual C++ .NET 2002以降に搭載されている。これに対し従来のC++をマネージドC++と区別する際にはアンマネージドC++あるいはネイティブC++と呼ぶ。1つのアプリケーション内にマネージドC++とアンマネージドC++のコードを混在させることも可能であり、従来のC++で書かれたコードを徐々に.NETへ移行したり、あるいは他の.NET言語からC++で作られたライブラリを使用したり、C++コードから.NET Frameworkのクラスライブラリを活用するなどといったことを可能にしている。
[編集] C++/CLI
詳細は「C++/CLI」を参照
C++/CLIは(文法に不明瞭な部分のあった)マネージ拡張C++に代わる、CLSを満たすC++を基にしたプログラミング言語であり、Visual C++ 2005から搭載されている。ただしVisual C++ 2005では互換性のため従来のマネージ拡張C++のソースコードもコンパイルできる。なおC++/CLI環境では、従来のC++はアンマネージドではなくネイティブと形容される。
[編集] 無料版
Visual C++はエディションによってサポートする機能に違いがあるが、プログラミング初心者やアップグレード検討者向けに、Windows用クラスライブラリなどが付属しない無料版がマイクロソフトによって公開されている。
無料版といえど、バージョンアップのたびに標準サポートされる機能が追加されており、VC 2005以降ではIDEのIntellisenseやデバッガなどの基本機能はStandardエディション以上の有料版と変わらず、ちょっとしたアプリケーションやライブラリを作成するには必要十分といえる。
- 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日に配布を終了した。MicrosoftがIDE製品の正式版を無料で公開したのは eMbedded Visual Toolsに続いてこれが2作目である。なお、MFCとATLは付属していない。また、Win32 APIを用いたプログラムを作成するには別途Windows SDKをインストールする必要がある。
- Visual C++ 2008 Express Edition
- Visual C++ 2005 Express Editionに続き2007年12月18日から公開されている。ATLやMFCが付属しない点はVisual C++ 2005 Express Editionと同じであるが、Windows SDKが標準で同梱されるようになり、Win32アプリケーションの開発に必要なWindows SDKを別途用意する必要がなくなった。
ほかにも、Windows SDK (旧Platform SDK)にもVisual C++コンパイラが付属している。
[編集] 製品バージョンと内部バージョン
Visual C++の製品バージョンは、バージョン6.0までは内部バージョンと同じ番号が付けられていたが、2002以降は内部バージョンではなくリリース予定年を冠するようになった。なお、Visual C++にはコンパイラのバージョンを表す _MSC_VER というプリプロセッサ シンボルが存在するが、これはVisual C++の前身であるMS-DOS用C/C++コンパイラ(通称MS-C)からの通し番号となっており、コンパイラ本体である cl.exe のファイルバージョンを表している。(このようにユーザーを混乱させかねない複数のバージョン表記は、Windowsと共通するものがある。)
| 製品名 | VC製品バージョン | VC内部バージョン | _MSC_VER | リリース | 備考 |
|---|---|---|---|---|---|
| C Compiler 6.0 | - | - | 600 | 1989年 | |
| C/C++ Compiler 7.0 | - | - | 700 | 1992年 | |
| Visual C++ 1.0 | 1.0 | 1.0 | 800 | 1993年 | |
| Visual C++ 2.0 | 2.0 | 2.0 | 900 | 1995年 | |
| Visual C++ 4.0 | 4.0 | 4.0 | 1000 | 1996年 | |
| Visual C++ 4.1 | 4.1 | 4.1 | 1010 | 1996年 | |
| Visual C++ 4.2 | 4.2 | 4.2 | 1020 | 1996年 | |
| Visual C++ 5.0 (Visual Studio 97) | 5.0 | 5.0 | 1100 | 1997年 | |
| Visual C++ 6.0 (Visual Studio 6.0) | 6.0 | 6.0 | 1200 | 1998年 | |
| Visual C++.NET 2002 (Visual Studio .NET 2002) | 2002 | 7.0 | 1300 | 2002年 | |
| Visual C++.NET 2003 (Visual Studio .NET 2003) | 2003 | 7.1 | 1310 | 2003年 | |
| Visual C++ 2005 (Visual Studio 2005) | 2005 | 8.0 | 1400 | 2005年 | |
| Visual C++ 2008 (Visual Studio 2008) | 2008 | 9.0 | 1500 | 2007年 | |
| Visual C++ 2010 (Visual Studio 2010) | 2010 | 10.0 | 1600 | 2010年(予) |
[編集] 脚注
- ^ ANSI Conformance
- ^ Visual C++ の OpenMP
- ^ Visual C++ Editions (2005)
- ^ Visual C++ Editions (2008)
- ^ How to: Iterate Over STL Collection with for each
- ^ How to: Declare Override Specifiers in Native Compilations
- ^ Compiler Support for Type Traits
- ^ SAL注釈
- ^ CRTのセキュリティ強化
- ^ Safe Libraries: Standard C++ Library
- ^ Checked Iterators
- ^ Visual C++ 2008 用の MFC Feature Pack
[編集] 関連項目
[編集] 外部リンク
最終更新 2009年11月28日 (土) 17:28 (日時は個人設定で未設定ならばUTC)。
【Microsoft Visual C++】変更履歴

