利用者:Anonymouse jp/sandbox
Microsoft C/C++ Optimizing Compiler (まいくろそふと しー/しーぷらすぷらす おぷてぃまいじんぐ こんぱいらー)とは、Microsoft社製のC言語及びC++言語そしてC++/CLI言語用のコンパイラーである。この記事ではMicrosoft C/C++ Optimizing Compilerと一体で配布されるMicrosoft Incremental Linkerについても扱う。 概要Microsoft C/C++ Optimizing Compilerは、Microsoft社製品のVisual C++やPlatform SDK、Windows SDKに付属するコンパイラーである[1]。単体では配布されておらず先述のSDKなどにcl.exeという実行ファイルで同梱されている。統合開発環境は有償となるがMicrosoft C/C++ Optimizing Compiler自体は無償で入手する事が出来る。 統語開発環境およびSDKとの関係Microsoft C/C++ Optimizing Compilerは統合開発環境と強い関係があるが、統合開発環境とは独立しており異るバージョン体系を持っている。例えば同じバージョンのVisual C++でもバージョンが異る複数のMicrosoft C/C++ Optimizing Compilerを使うことができる。
使用形態Microsoft C/C++ Optimizing Compilerは主にMicrosoft社製の統合開発環境と一体で使用されるが、前述の統合開発環境と独立しているためMicrosoft C/C++ Optimizing Compiler単体でも使用することができる。またEclipseのようにMicrosoft社以外が開発した統合開発環境でも使用できる場合がある[2]。 言語Microsoft C/C++ Optimizing Compilerは、C, C++, C++/CLIのソースコードを入力に受け付ける。C言語規格に関しては、バージョン15.00.30729.01の時点でANSI C89 (ISO C90, ISO/IEC 9899:1990) 対応[3]であり、C99には対応していない。C++言語規格に関しては、バージョン15.00.30729.01の時点でC++98 (ISO/IEC 14882:1998) 規格に対応している[4]。 バージョン16.00.30319.01では、auto、decltype、ラムダ式、rvalue reference(右辺値参照)、static_assert、nullptrなど、C++11規格で追加された機能を一部規格制定に先行して実装した[5]。 バージョン17.00.51106.1では、Strongly typed enums、Forward declared enums、Standard-layout and trivial types、Range-based for-loop などのC++11規格を実装した[6]。 主なコンパイラーの拡張
マネージ拡張C++→詳細は「C++マネージ拡張」を参照
マネージ拡張C++ (Managed Extensions for C++、マネージドC++、Managed C++) は.NET Frameworkに対応したアプリケーションを作成するため、C++を共通言語仕様CLSに準拠させるために独自の拡張を施したものであり、バージョン13.00.9466以降に搭載されている。これに対し従来のC++をマネージドC++と区別する際にはアンマネージドC++あるいはネイティブC++と呼ぶ。1つのアプリケーション内にマネージドC++とアンマネージドC++のコードを混在させることも可能であり、従来のC++で書かれたコードを徐々に.NETへ移行したり、あるいは他の.NET言語からC++で作られたライブラリーを使用したり、C++コードから.NET Frameworkのクラスライブラリーを活用するなどといったことを可能にしている。 C++/CLI→詳細は「C++/CLI」を参照
C++/CLIは(文法に不明瞭な部分のあった)マネージ拡張C++に代わる、CLSを満たすC++を基にしたプログラミング言語であり、バージョン14.00.50727.762から搭載されている。ただしバージョン14.00.50727.762では(非推奨ではあるが)互換性維持のため従来のマネージ拡張C++のソースコードもコンパイルオプション「/clr:oldSyntax」を指定することでコンパイルできる[2]。なおC++/CLI環境では、従来のC++はアンマネージドではなくネイティブと形容される。 C++/CX→詳細は「C++/CX」を参照
C++/CX (component extensions) は、Windowsストアアプリで使用されるWinRTランタイムライブラリーを利用するために、C++11規格をベースとして拡張されたプログラミング言語であり、バージョン17.00.51106.1に搭載されている。なお、言語構文は前述のC++/CLIとよく似ているが、C++/CXはC++/CLIとは違ってマネージ言語ではなく、ネイティブ拡張であるため、従来のネイティブC/C++用コードやCRTライブラリーはほぼそのまま利用できるが、.NET Frameworkを直接扱うことはできない。また、C++/CLIとは同一ソースコード内に共存できない。
|
Portal di Ensiklopedia Dunia