LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

Microsoft Visual C++

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++ 2005以降はVisual BasicやVisual 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 BasicやDelphiのような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プロセッサ向けのコード生成にも対応している。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 C++のコンパイラは、C, C++, C++/CLI, C++/CXのソースコードを入力に受け付ける。C言語規格に関しては、Visual C++ 9.0 (2008) SP1の時点ではANSI C89 (ISO C90, ISO/IEC 9899:1990) 対応であり、C99には対応していない(//で始まるコメントやlong long intなどは言語拡張としてサポートされている)。Visual C++ 2013では、全てではないがC99の関数の大半を追加した。C++言語規格に関しては、Visual C++ 9.0 (2008) SP1の時点でC++98 (ISO/IEC 14882:1998) 規格に対応している。Visual C++ 10.0 (2010) では、auto、decltype、ラムダ式、rvalue reference(右辺値参照)、static_assert、nullptrなど、C++11規格で追加された機能を一部規格制定に先行して実装した。Visual C++ 11.0 (2012) では、Strongly typed enums、Forward declared enums、Standard-layout and trivial types、Range-based for-loop などのC++11規格を実装した。Visual C++ 12.0 (2013) では、Initializer lists、Alias templates、Delegating constructors、Raw string literals などのC++11規格を追加実装した。Visual C++ 14.0 (2015) では、constexpr、Unicode string literalsなどのC++11規格を追加実装し、またBinary literalsなどのC++14規格を一部実装した。C++11およびC++14の実装はまだ完了していない。特に、Visual C++ 2005ではバッファオーバーフローやマルチスレッドでの安全性の向上のため、大幅なライブラリの拡張が行われた。Cの関数にはstrcpyに対してstrcpy_sのように末尾に_sを追加した名称のものが該当し、その大半はISO Cの標準化委員会へTR 24731として提案されている。また、C++でも_sを付けたメンバ関数の追加(std::basic_istream::readに対して_Read_sのように)や範囲チェック付イテレータなどの追加が行われている。なお、Visual C++ 2008にService Pack 1 (SP1) を適用すると、C++0x TR1対応ライブラリや、MFCでのVisual Studio風スマートドッキングウィンドウおよびOffice 2007風リボンインターフェイス作成のための拡張パッケージ(MFC Feature Pack)が追加される。また、Visual C++ 2010にSP1を適用すると、Direct2DやWindows Animation ManagerのMFC用ラッパークラスが追加される。マネージ拡張C++ (Managed Extensions for 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++の使用は推奨されなくなっている。C++/CLIは(文法に不明瞭な部分のあった)マネージ拡張C++に代わる、CLSを満たすC++を基にしたプログラミング言語であり、Visual C++ 2005以降に搭載されている。ただしVisual C++ 2005では(非推奨ではあるが)互換性維持のため従来のマネージ拡張C++のソースコードもコンパイルオプション「/clr:oldSyntax」を指定することでコンパイルできる。なおC++/CLI環境では、従来のC++はアンマネージではなくネイティブと形容される。C++/CX (component extensions) は、Windowsストアアプリで使用されるWinRTランタイムライブラリを利用するために、C++11規格をベースとして拡張されたプログラミング言語であり、Visual C++ 2012以降に搭載されている。なお、言語構文は前述のC++/CLIとよく似ているが、C++/CXはC++/CLIとは違ってマネージ言語ではなく、ネイティブ拡張であるため、従来のネイティブC/C++用コードやCRTライブラリはほぼそのまま利用できるが、.NET Frameworkを直接扱うことはできない。また、C++/CLIとは同一ソースコード内に共存できない。32ビット/64ビット向けのVisual C++では、C/C++のlong double型は互換性のためだけに残されており、80ビットの拡張倍精度や128ビットの四倍精度をサポートしない。Visual C++ 2005以降は/archコンパイルオプションによって、コンパイラ(オプティマイザ)は必要に応じて浮動小数演算にFPUでなくSSE/SSE2を使ったコードを出力できるようになるが、x64のようにすべての浮動小数演算命令がSSE2になるとは限らない。また、Visual C++ 2010以降はAVX命令の使用もサポートしている。Visual C++ 2013 Update 2以降はAVX2命令の使用もサポートしている。Visual C++はエディションによってサポートする機能に違いがあるが、プログラミング初心者やアップグレード検討者向けに、Windows用クラスライブラリなどが付属しない無料版がマイクロソフトによって公開されている。無料版といえど、バージョンアップのたびに標準サポートされる機能が追加されており、VC 2005以降ではIDEのIntellisenseやデバッガなどの基本機能はStandardエディション以上の有料版と変わらず、簡単なアプリケーションやライブラリを作成するには必要十分といえる。なおExpressエディションの提供はバージョン2013までとなり、以降はCommunityエディションに統合される予定だったが、その後撤回され、Visual Studio 2015においてもExpressエディションが提供されることになった。ほかにも、バージョン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++の製品バージョンは、バージョン6.0までは内部バージョンと同じ番号が付けられていたが、2002以降は内部バージョンではなくリリース予定年を冠するようになった。なお、Visual C++にはコンパイラのバージョンを表す codice_1 および codice_2 というプリプロセッサ シンボルが存在するが、これはVisual C++の前身であるMS-DOS用C/C++コンパイラ(通称MS-C)からの通し番号となっており、コンパイラ本体である cl.exe のファイルバージョンを表している。(このようにユーザーを混乱させかねない複数のバージョン表記は、Windowsと共通するものがある。)

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。