Visual C++の前身はMicrosoft C/C++と呼ばれていました。Microsoft QuickC 2.5とMicrosoft QuickC for Windows 1.0もありました。Visual C++コンパイラは現在もMicrosoft C/C++と呼ばれており、Visual C++ 2015 Update 2のリリース時点ではバージョン14.0.23918.0です。[要出典]
16ビットバージョン
Microsoft C 1.0 は、Lattice Cをベースにしており、1983 年の Microsoft 初の C 製品でした。K &R Cに準拠していませんでした。
C 2.0では大規模モデルのサポートが追加され、コードセグメントとデータセグメントの両方で最大1MiBまで許容されるようになりました。[5]
C 3.0は、マイクロソフト社内で開発された最初のバージョンでした。[6]このバージョンは、K&Rおよび後のANSI規格との互換性を目的としていました。1984年初頭にはマイクロソフト社内( WindowsおよびXenixの開発)で使用されていました。製品として出荷されたのは1985年でした。
C/C++ 7.0は1992年にリリースされました。OS/2のサポートは削除されました。コンパイルには386プロセッサと、それに含まれるDOSエクステンダである386MAXが必要でした。[8]ただし、ユーザーが自身のプログラムでDOSエクステンダをターゲットにするには、後にリリースされたサードパーティ製ツールのいずれかが必要でした。[9] C++とMFC (Microsoft Foundation Class Library)1.0の組み込みサポートが追加されました。[10]
Visual C++ 1.0はMFC 2.0を含み、1993年2月にリリースされた「Visual」C++の最初のバージョンでした。Cfront 2.1に準拠しており[ 11 ]、2つのエディションがありました。[1]
標準: Windows 用の QuickC を置き換えました。
Professional: C/C++ 7.0 に代わるバージョン。DOS および Windows アプリケーションの両方をビルドする機能、最適化コンパイラ、ソースプロファイラ、Windows 3.1 SDK が含まれています。[11] Phar Lap 286 DOS Extender Lite も含まれています。[12]
Visual C++ 1.5は1993年12月にリリースされ、MFC 2.5を同梱し、MFCにOLE 2.0とODBCのサポートを追加しました。 [13]これはCD-ROMのみで提供されたVisual C++の最初のバージョンでした。
Visual C++ 1.51 および 1.52 は、サブスクリプション サービスの一部として利用可能でした。
Visual C++ 1.52b は 1.52 に似ていますが、コントロール開発キットは含まれていません。
1993年にリリースされたVisual C++ 1.0(旧称:Visual C++ 32ビット版)は、Intel 386アーキテクチャ向けの最初の32ビット開発版(ホストとして32ビット版Windows NTが必要)でした。[14] 16ビット版1.5がリリースされた時期にリリースされましたが、OLE2とODBCのサポートは含まれていませんでした。また、Visual C++ 1.5を含むVisual C++ 16/32ビットスイートというバンドル版も提供されていました。[15]
MFC 3.0を含むVisual C++ 2.0は、32ビット専用となった最初のバージョンでした。当時コードネーム「Chicago」と呼ばれていたWindows 95はまだリリースされておらず、 Windows NTの市場シェアも小さかったため、このバージョンは多くの点で時代を先取りしていました。マイクロソフトはVisual C++ 1.5を2.xリリースの一部として組み込み、2.1までアップデートしました。2.1にはVisual C++ 1.52が含まれており、コントロール開発キット(CDK)の16ビット版と32ビット版の両方が含まれていました。Visual C++ 2.xはWin32s開発もサポートしていました。これはMicrosoft Developer Networkから入手できます。MIPSおよびAlphaプロセッサ向けのVisual C++ 2.0 RISC Editionと、 Macintosh(68000命令セット)向けのクロスプラットフォーム版がありました。[16]
Microsoft Visual C++ Cross-Development Edition for the MacintoshはVisual C++のアドオンで、Windows Portability Libraryを導入しました。これは元々Windows Library for Macintosh [17] : 17 またはWindows Layer for the Macintosh (WLM) [18] : 16 として知られていました。これにより開発者はWin32およびMFC APIに対してアプリケーションを作成し、68000アーキテクチャのMacintoshコンピューター用にコンパイルできるようになりました。[17]
Visual C++ 2.1 および 2.2 は、サブスクリプションを通じて入手可能な 2.0 のアップデートでした。
1995年12月11日にリリースされたVisual C++ 4.0 [19]では、 Developer Studio IDEが導入されました。当時としては斬新だった、重なり合わないパネルのタイル状レイアウト(ナビゲーションパネル、エディター/ソースレベルデバッガーの組み合わせパネル、コンソール出力パネル[20] )は、 Visual Studio製品ラインを通じて継続されています(2025年現在[アップデート])。Visual C++ 4.0にはMFC 4.0が含まれており、Windows 95とWindows NT用に設計されていました。レガシー(Windows 3.x/DOS)プロジェクトのサポートを可能にするため、4.0にはVisual C++ 1.52インストールCDがバンドルされていました。サブスクリプションを通じて利用できるアップデートには、Microsoft Game SDK(後にDirectX SDKとして個別にリリース)に付属するVisual C++ 4.1とVisual C++ 4.2が含まれていました。Visual C++ 4.0とMFC 4.0のバージョン番号の整合性を保つため、バージョン番号3.0はスキップされました。[21]
Visual C++ 4.2はWindows 3.x(Win32s)開発をサポートしていませんでした。[22]これはMac用のクロスプラットフォーム版が利用可能になった最終バージョンであり、 PowerPC命令セットのコンパイルも可能である点で2.xバージョンと異なっていました。
Visual C++ 5.0(Visual Studio 97にバンドル)にはMFC 4.21が含まれており、1997年4月28日にリリースされました。[19] 4.2からのメジャーアップグレードでした。[23] Learning、 [24] Professional、[25] Enterprise、[26] RISCの4つのエディションがあります。 [27]
Visual C++ 6.0(通称VC6、Standard、Professional、Enterpriseの各エディションでスタンドアロン版が利用可能、またVisual Studio 6.0にもバンドル版が付属)は1998年にリリースされ、MFC 6.0が含まれていました。[28] [29]このリリースは、期待されていたMFCのアップデートが含まれていなかったため、多少物議を醸しました。Visual C++ 6.0は今でも非常に人気があり、レガシープロジェクトの保守によく使用されています。しかし、このバージョンにはWindows XP、特にデバッグモードで問題が発生する場合があります(例えば、静的変数の値が表示されないなど)。これらのデバッグ問題は、「Visual C++ 6.0 Processor Pack」と呼ばれるパッチで解決できます。[30]バージョン番号:12.00.8804
Visual C++ .NET 2002(Visual C++ 7.0とも呼ばれる)は、MFC 7.0を含み、リンク時コード生成とランタイムチェックのデバッグ、.NET 1.0、Visual C#、およびManaged C++をサポートして2002年にリリースされました。新しいユーザーインターフェイスはVisual Basicの多くのホットキーと規約を採用しており、これがC++開発者の間で不評を招いた一因となりました。[要出典]バージョン番号:13.00.9466
MFC 7.1を含むVisual C++ .NET 2003(Visual C++ 7.1とも呼ばれる)は、.NET 1.1と共に2003年にリリースされ、Visual C++ .NET 2002のメジャーアップグレードであり、C99の「long long」構文をサポートした最初のバージョンでした。これはVisual C++ .NET 2002のパッチとみなされていました。そのため、Visual Studio .NET 2003の英語版アップグレード版は、英語版Visual Studio .NET 2002の所有者向けに最小限のコストで提供されました。公式にサポートされている最低バージョンはWindows 98です。単純なプログラムはWindows 95およびNT 4.0でも動作しますが、より複雑なプログラムではws2_32.dllなどが参照されたり、kernel32.dllの関数が欠落したりすることがあります。それ以降のバージョンのコンパイラ(Visual C++ 2005)では、Windows 98 以降にのみ存在する kernel32.dll の関数 IsDebuggerPresent への参照があるため、単純なプログラムでも動作しません(C ライブラリを置き換えない限り)。[引用が必要]バージョン番号: 13.10.3077
eMbedded Visual C++ [31]の様々なバージョンは、Windows CEオペレーティングシステムの一部のバージョンの開発に使用されていました。当初はVisual C++ 6.0に追加されたツール群からなる開発環境を置き換えるものでした。eMbedded Visual C++は、Microsoft Visual Studio 2005によって独立した開発環境として置き換えられました。
32ビット版と64ビット版
Visual C++ 2005 (Visual C++ 8.0 とも呼ばれる) は MFC 8.0 を包含し、2005 年 11 月にリリースされた。このバージョンは .NET 2.0 をサポートし、以前のバージョン ( Managed C++ )を置き換える目的で.NET Framework を対象とした新しいバージョンの C++ ( C++/CLI ) を包含している。ただし、CLI 用の Managed C++ は、コンパイラ オプション経由で引き続き利用できる。また、OpenMP も導入された。Visual C++ 2005 では、Microsoft はTeam Foundation Serverも導入した。Visual C++ 8.0 では、Visual Studio 6.0 を使用して作成された MFC AppWizard プロジェクトをコンパイルするときに問題が発生するため、書き換えが不可能な場合は、元の IDE を使用してレガシー プロジェクトのメンテナンスを継続することができる。Visual C++ 2005 は、Windows 98およびWindows Meを対象とできる最後のバージョンである。[32] [33] SP1 バージョン (14.00.50727.762) は、 Microsoft Windows SDK Update for Windows Vistaでも利用できる。
Visual C++ 2008(Visual C++ 9.0とも呼ばれる)は2007年11月にリリースされました。このバージョンは.NET 3.5をサポートしています。CLI用のManaged C++は、コンパイラオプションを介して引き続き利用できます。デフォルトでは、Visual C++ 2008ランタイム(静的および動的リンク)に対してコンパイルされたすべてのアプリケーションは、Windows 2000、Windows XP SP2以降でのみ動作します。[34] [35] VC9用にリリースされ、後にSP1に含まれた機能パックは、C++ TR1ライブラリ拡張のサポートを追加しました。SP1バージョン(15.00.30729.01)は、 Microsoft Windows SDK for Windows 7でも利用できます。
Visual C++ 2010 (Visual C++ 10.0 とも呼ばれる) は、2010年 4月 12日にリリースされました。SQL Server Compactデータベースを使用して、 IntelliSense情報を含むソースコードに関する情報を格納し、IntelliSense とコード補完のサポートを向上させました。[36]ただし、Visual C++ 2010 は、C++/CLI の IntelliSense をサポートしていません。[37]このバージョンでは、 Parallel Patterns Libraryと呼ばれる C++並列コンピューティングライブラリ、 C++11の部分的なサポート、 Edison Design Groupフロントエンドに基づく大幅に改善された IntelliSense 、 [38]コンパイラと生成されたコードの両方のパフォーマンスの向上が追加されました。[39]このバージョンは .NET 4.0 に基づいて構築されていますが、マシンコードへのコンパイルをサポートしています。部分的な C++11 のサポートは、主に 6 つのコンパイラ機能で構成されています。[40]ラムダ、右辺値参照、auto、decltype、static_assert、および nullptr。 C++11 はライブラリ機能もサポートしています (例: TR1 コンポーネントを std::tr1 名前空間から std 名前空間に直接移動する)。可変長引数テンプレートも検討されましたが、優先度が低いため将来のバージョンまで延期されました。これは、実装コストのかかる他の機能 (ラムダ、右辺値参照) とは異なり、可変長引数テンプレートは、大多数のコンパイラエンドユーザーではなく、少数のライブラリ作成者にしかメリットがないという事実に起因しています。[41 ]デフォルトでは、Visual C++ 2010 ランタイムに対してコンパイルされたすべてのアプリケーションは、Windows XP SP2 以降でのみ動作します。 RTM バージョン (16.00.30319 ) は、Windows SDK for Windows 7 および .NET Framework 4 (WinSDK v7.1) でも使用できます。[42] SP1 バージョン (16.00.40219) [43]
Visual C++ 2012(Visual C++ 11.0とも呼ばれる)は2012年8月15日にリリースされました。C++11のサポートが強化され、Windowsランタイム開発がサポートされています。[44]
Visual C++ 2013(Visual C++ 12.0とも呼ばれる)は2013年10月17日にリリースされました。C++11とC99のサポートが強化され、REST SDKが導入されました。[45]
Visual C++ 2015(Visual C++ 14.0とも呼ばれる)は2015年7月20日にリリースされました。[46] C++11/14/17のサポートが強化されました。[47] Microsoftからの発表なしに、Visual Studio 2015 Update 2はコンパイルされたバイナリでテレメトリ呼び出しを生成するようになりました。一部のユーザーからこの問題についてMicrosoftに連絡があった後、Microsoftは将来のVisual Studio 2015 Update 3でコンパイルする際にこれらのテレメトリ呼び出しを削除すると発表しました。[48] [49]問題の関数はVisual Studio 2015 Update 3のVisual C++ CRT静的ライブラリから削除されました。[要出典]
Visual C++ 2017(Visual C++ 14.1とも呼ばれる)は2017年3月7日にリリースされました。[50]
Visual C++ 2019(Visual C++ 14.20とも呼ばれる)は2019年4月2日にリリースされました。[51]
Visual C++ 2022(Visual C++ 14.30とも呼ばれる)は2021年11月8日にリリースされました。[52]
厳密に64ビットバージョン
Visual C++ 2026(Visual C++ 14.50とも呼ばれる)は2025年11月11日にリリースされました。[53]
内部バージョン番号
Visual C または C++ を使用する際には、考慮すべきバージョン番号がいくつかあります。これらのうち最も古く、最も独自のものはコンパイラのバージョン番号で、Microsoft C コンパイラの初期の時代から単調に増加してきました。これは、cl.exeオプションを指定せずにコマンドを単独で実行すると返されるバージョンです。小数点以下 2 桁を取り、小数点を切り捨てると、C プリプロセッサ マクロ_MSC_VERおよび CMake 変数の値にもなりますMSVC_VERSION。C マクロの長いバージョンは、_MSC_FULL_VERコンパイラのビルドをより細かく区別するためのものです。例えば、_MSC_VERは 1933 で、Microsoft C/C++ コンパイラのバージョン 19.33 を表します。 は_MSC_FULL_VER193331630 です。
Visual C++ 2013では、Cモードでの様々なC99機能(指定初期化子、複合リテラル、_Bool型など)のサポートがようやく追加されましたが、[64]まだ完全ではありませんでした。[65] Visual C++ 2015では、C99のサポートがさらに改善され、C99標準ライブラリが完全にサポートされましたが、コンパイラでまだサポートされていないC99言語機能を必要とする機能を除きました。[66]
C11標準リビジョンからの変更のほとんどは、 Visual C++ 2017では依然としてサポートされていませんでした。[67]たとえば、_Genericキーワードによるジェネリック選択はコンパイラでサポートされておらず、構文エラーが発生します。[68]
BYTE誌は1989年2月号で、Microsoft C 5.1のOS/2サポート、インタラクティブ開発のためのQuickC、そしてCodeViewデバッガを「素晴らしい」と評し、高く評価した。Watcom Cは若干高速なコードを生成するものの、「開発者は依然としてMicrosoftのより使いやすく強力なツールを好むかもしれない」と同誌は述べている。[76]
参考文献
^ ab 「Visual C++がWindowsサポートを追加」InfoWorld、1993年2月22日、17ページ。
^ “Visual C++ 4.0 から 4.2 への主な変更点”. 2010年2月28日時点のオリジナルよりアーカイブ。2018年4月18日閲覧。
^ 「Visual C++ 4.2 から 5.0 への主な変更点」。
^ 「Microsoft Visual C++ 5.0 Learning Edition」。Microsoft。1999年4月27日時点のオリジナルよりアーカイブ。
^ 「Microsoft Visual C++ 5.0 Professional Edition」。Microsoft。1999年4月27日時点のオリジナルよりアーカイブ。
^ 「Microsoft Visual C++ 5.0 Enterprise Edition」。Microsoft。1999年4月17日時点のオリジナルよりアーカイブ。
^ 「Microsoft Visual C++ 5.0 RISC Edition」。Microsoft。1999年4月29日時点のオリジナルよりアーカイブ。
^ Shields, Nathan P. (2018年6月8日). 「刑事告訴」.米国司法省. p. 128.これだけでは決定的な関連性とは言えません。1998年にリリースされたVisual C++ 6.0は、それ以降のバージョンのVisual C++とは異なり、Microsoftの.NET Frameworkのインストールを必要としないため、今でも支持者がいます。
^ “Visual C++ 5.0 から 6.0 への主な変更点”. 2008年9月14日時点のオリジナルよりアーカイブ。
^このページでは、ユーザーが Windows 98、Windows NT 4.0、または Windows 2000 も実行している必要があることを強調しています。http://msdn2.microsoft.com/en-us/vstudio/aa718349.aspx から取得。
^ Douglas Boling : Programming Microsoft Windows CE .NET、第3版Microsoft Press; 第3版 (2003年6月25日) ペーパーバック: 1264ページISBN978-0735618848- Microsoft eMbedded Visual C++ 4.0 Service Pack 2 付属 CD 2013 年 2 月 11 日にarchive.todayにアーカイブされました
^方法: WINVER と _WIN32_WINNT を変更する
^重大な変更
^ Windows プラットフォーム (CRT)
^ 「Visual C++ 2008 の重大な変更点」。2023年5月25日。
^ Visual C++ チームブログ. 「IntelliSense、パート2:将来」 . 2008年3月12日閲覧。
^ Visual C++ チーム ブログ。「Visual Studio 2010 での Visual C++ コード生成」。
^ 「VC10 の C++0x コア言語機能: 表」。
^ 「Stephan T. Lavavej: nullptr について知りたいことすべて」。
^ Microsoft Windows SDK ブログ。「リリース: Windows 7 および .NET Framework 4 用 Windows SDK」。
^修正: Windows SDK v7.1 がインストールされている場合、Visual Studio 2010 Professional または Visual Studio 2010 Express を Visual Studio 2010 SP1 にアップグレードすると、Visual C++ コンパイラが削除されます。