図1
図1
[画像のクリックで拡大表示]
図2
図2
[画像のクリックで拡大表示]
図3
図3
[画像のクリックで拡大表示]
図4
図4
[画像のクリックで拡大表示]
図5
図5
[画像のクリックで拡大表示]

 米Microsoftは、1年という期限付きながら、開発ツールの一部を無料で提供することにしました。今回は、Visual C++ 2005 Express Edition(VCEE)と呼ばれる無料開発ツールを取り上げ、ぜひマスターしてもらいたい、いくつかの機能を紹介いたします。無料で提供されるツールとはいえ、VCEEは優れた機能を多数備えています。

VCEEの特徴

 VCEE(http://msdn.microsoft.com/vstudio/express/visualc/">ダウンロードはこちら)は、これからプログラミングを学ぼうとする学生や趣味でプログラミングを楽しみたい人向けの学習ツールという性格を持っています。極論すると、Windowsアプリケーションなどの高度なプログラムを開発するのではなく、標準C++ライブラリの使い方を学ぶためのツールと考えてよいでしょう。Microsoft社の各種のVC++関連ドキュメントを読んでみると、「標準C++仕様への準拠」という表現が随所に見られます。ここでちょっと難しくなりますが、次の情報をご覧ください。

Due to a conformance change in the C++ compiler, code change may be required before your project will build without errors. Previous versions of the C++ compiler allowed specification of member function pointers by member function name (e.g. MemberFunctionName). The C++ standard requires a fully qualified name with the use of the address-of operator (e.g. &ClassName::MemberFunctionName). If your project contains forms or controls used in the Windows Forms Designer, you may have to change code in InitializeComponent because the designer generated code used the non-conformant syntax in delegate construction (used in event handlers).

 この情報は、VC++6.0で作成したソースコードをVCEEでビルドしたときに返されるものです。要点を整理すれば、この情報は次のようなことを警告しています。

最新VC++は標準C++仕様に準拠するように変更されました。このため、以前のソースコードは最新開発環境でビルドする前にその一部を修正する必要があります

 ここでは、標準C++に関する知識を身に付けることが重要であることを覚えておきましょう。実際、VCEEはデフォルトでは標準C++を学ぶための機能のみをサポートし、実用的なWindowsプログラムを開発するための機能を備えていません。それでは、単純な標準C++プログラムを実際に作成しながら、VCEEが提供するいくつかの有益なオプション機能を学習しましょう。

標準C++サンプル・コードのビルドとオプション機能

 今回は、次のようなサンプルコードを用意してみました。

#include <iostream>

int main()
{
const std::string str ("Hello World!\n");
const char* pstr = str.data();
std::cout << pstr;
return 0;
}

 このコードをビルドし、実行すると、「Hello World!」という文字列が画面に表示されます。このコードはC++仕様に準拠しています。そのことを自分の目で確認したい場合には、図1のようなオプション機能を選択し、VC++固有の機能を使用しないように宣言します。

 この機能を有効にした状態でWindowsアプリケーションのソースコードをビルドすると、さまざまなエラーと警告が出ます。

 上のソースコードを見ると、先頭に「#include <iostream>」という一行が記述されています。これは「ヘッダー・ファイルのインクルード」といい、プログラム内で呼び出す機能のインタフェース情報を取り入れるものです。このソースコードでは「<iostream>」というたった1つのヘッダー・ファイルをインクルードしているだけですが、実際には、そのインクルード・ファイルは別のインクルード・ファイルを内部で多数読み込んでいるのです。

 どのようなインクルード・ファイルを読み込んでいるのかを知りたい方は、図2のようなオプション機能を使ってください。

 このオプションを有効にすると、VCEEが自動的に作成する「BuildLog.htm」というファイルに、背後で呼び出されるすべてのインクルード・ファイルの情報が記録されます。筆者の環境では、図3のような情報が記録されました。

 「iostream」ファイルはその内部で「istream」というインクルード・ファイルを呼び出しています。さらに「istream」インクルード・ファイルは、「ostream」ヘッダー・ファイルを読み込んでいます。

 VC++関連のニュース・グループなどの投稿記事に目を通してみると、正常にビルドできない理由などを尋ねる質問をよく見かけます。特に、新しいバージョンの開発環境が出荷された直後などは、その種の質問が増えます。質問に答える人は、回答する前に、「あなたのビルド・ログ・ファイルの内容を見せてください」と依頼することがあります。回答者は、質問者のインクルード・ファイルに関する情報を見て、その質問者のビルド環境設定に潜む問題を指摘するわけです。

 VCEE環境に慣れてくると、Windowsアプリケーションを作りたいと考える人も出てくるでしょう。その際には、Platform SDKと呼ばれる開発ツールを別途ダウンロードし、開発環境を整備する必要があります。おそらく、この環境の整備に戸惑う人は結構いるはずです。環境の整備がうまくいかないと、Windowsアプリケーションが正常に作成されず、いろいろなエラーと警告が表示されることになります。そのような場合、図4のオプション機能を使ってください。

 このオプション機能を有効にすると、先ほど説明した「BuildLog.htm」ファイルに、現在有効となっている環境情報が記録されるようになります。筆者の環境では、図5の情報が記録されました。

 インクルード・ファイルの格納パスやライブラリ・ファイルの格納パスなどの情報が記録されています。ビルド処理が正常に行われない場合、この記録をまず確認してみるとよいでしょう。

VCEEの有効活用上のポイント

 冒頭でも説明したように、VCEEは、標準C++コードを学習するための道具という性格を持っています。これからC++プログラミング言語を学習する方は、こちらで一般公開されているサンプル・コードを試してみるとよいでしょう。これらのサンプル・コードは、STL(Standard Template Library)と呼ばれる標準テンプレート・ライブラリの利用方法を学ぶために用意されています。環境に慣れるまでは、コピーと貼り付けを繰り返し、ビルドするだけでもよいでしょう。正常にビルドできるだけでも気分のよいものです。また、こちらでダウンロードできるサンプル・コードもお勧めです。

 ダウンロードしたサンプル・コードを無事にビルドできると、「.manifest」という拡張子を持つ、あまり見たこともないようなファイルが作成されるはずです。これは、DLL(ダイナミック・リンク・ライブラリ)とWindowsの関係がさらに抽象化されたのです。これらの情報は、今後多数公開されてくるはずです。しかし当面は、それらのファイルの意味を理解する必要はありません。

今回のまとめ

  • 無料の開発環境VCEEが公開された
  • VCEEは標準C++を学習するための優れた教材である
  • 標準C++学習用のサンプル・コードは多数インターネット上に公開されている