この記事では、Microsoft Visual C++ の定義、進化、互換性といった基本的な情報をご紹介します。

Microsoft Visual C++とは

Microsoft Visual C++MSVC)は、C、C++、CLIプログラミング言語向けに使用される統合開発環境(IDE)製品です。<C++は静的データに対応する汎用プログラミング言語で、複数のプログラミングパラダイムをチェック・サポートします。MiniToolのこの記事で、Microsoft Visual C++に関する詳しい情報を知ることができます。

さらに、プログラム設計、データ抽象化、オブジェクト指向プログラミング、ジェネリックプログラミングなど、さまざまなスタイルのプログラミングに対応しています。  

Microsoft Visual C プラスプラス

MSVCはプロプライエタリ製品です。当初から独立した製品でしたが、後にVisual Studioの一部となり、体験版やフリーソフトとして提供されるようになりました。特にWindows API、DirectX、.NET用のC++コードを開発・調整するツールを備えています。

ほとんどのアプリケーションは、適切に機能するためにMicrosoft Visual C++ 再頒布可能ランタイムライブラリパッケージを必要とします。通常、アプリケーションとは独立してインストールされ、複数のアプリケーションがパッケージを使用できるようになっているため、インストールは1度で済みます。

これらのMicrosoft Visual C++再頒布可能コンポーネントおよびランタイム・パッケージは、主に多くのアプリケーションで使用される標準ライブラリにインストールされます。

Microsoft Visual C++をよくお使いの方は、こちらの記事もご覧下さい: MiniTool Power Data Recovery エラーコード14001

Microsoft Visual C++の進化

Visual C++の前身はMicrosoft C/C++です。Microsoft QuickC 2.5とMicrosoft QuickC for Windows 1.0もあります。Visual C++コンパイラは、今もMicrosoft C/C++と呼ばれています。Microsoft Visual C ++ 2015 Update 2のリリース以降、バージョン番号は19.00.23918です。

当初、C++はC言語の強化版として登場しました。新しいクラスをC言語に追加することから始めて、常に新機能が追加されています。C++の開発プロセスは、3つのフェーズに分けられます。

第1フェーズは1980年から1995年です。この段階では、C++言語は基本的に従来型のオブジェクト指向言語として、C言語に近い効率性を持っています。業界で使用されている開発言語の中でかなりのシェアを占めています。

第2フェーズは1995年から2000年です。この段階では、標準テンプレートライブラリ(STL)や後のBoostのようなライブラリの登場により、ジェネリックプログラミングはC++の中でもますます重要な位置を占めるようになりました。もちろん、JavaやC#といった言語の登場やハードウェア価格の大幅な値下がりは、C++にある程度の影響がありました。

第3フェーズは、2000年から現在まで続いています。C++は、LokiやMPLといったライブラリに代表される本格的なプログラミングやテンプレートメタプログラミングの登場により、開発の歴史における新たな高みに到達しました。

新しい技術の登場とオリジナルの技術との統合により、C++は今日の主要なプログラミング言語の中で最も複雑なものとなりました。

さらに、C++の学習に関しては、C言語に依存しない独立した言語と見なすことができます。  その事実に基づいて、C言語を学ぶことなく直接C++を学ぶことができます。C++はほとんどの場合において、C言語に完全に取って代わることができるとさえ考えている人もいます。

提示:
Microsoft Visual C++を使用して、api-ms-win-crt-runtime-l1-1-0.dllエラーを修正できます。詳しくはこちらの記事をご覧下さい: 「api-ms-win-crt-runtime-l1-1-0.dllが見つかりません」を修正する方法

Microsoft Visual C++の互換性

ABI: Visual C++コンパイラのABIは、これまでにも主要なコンパイラのバージョン間で変更が行われてきました。特にSTLコンテナに関しては、コンテナのサイズがコンパイラのバージョンによって大きく異なることがよくあります。

そのため、異なるコンパイラバージョンでコンパイルされたクライアントコードを有効にしたい場合、Microsoftはモジュール境界でC++インターフェースを使用することを推奨していません。Microsoftは、コンパイラのバージョン間で安定したABIを持つように設計されたCまたはCOMインターフェースの使用を推奨しています。

Cランタイムライブラリ: Visual C++にはさまざまなバージョンのCランタイムライブラリが含まれており、利用可能なライブラリを使用してコードをコンパイルできます。ただし、1つのアプリケーションで異なるコンポーネントを使用する場合、その操作が問題を引き起こすことがあります。

Microsoftは、起こり得る問題を回避するために、マルチスレッドダイナミックリンクライブラリ(/MD または /MDd コンパイラオプション)の使用を推奨しています。

C: この製品はC言語のIDEから発展してきましたが、長年にわたってコンパイラがC言語をサポートしてきたのは、C標準の元のバージョンに準拠したものだけです。それは1989年まで遡ることができますが、C99標準の改訂版に準拠していません。

Visual C++ 2013では、CモードでようやくさまざまなC99関数のサポートが追加されるようになりましたが、まだ完全なものとは言えません。それでも、既存の問題を解決すべく改善を続けています。

  • hatena