2006年2月になりVisual Studio 2005日本語版が発売となりました。

見た目は、VS.netとたいして変わりません。使い方もほとんど同じです。

しかし、中身が大幅に変わったようです。

インストールは、順調にいけば1時間くらいで終わります。

しかし、うっかりベータ版がインストールしてあるのを忘れて、そのまま正式版を インストールすると恐ろしい目にあいます。

どうなるかというと、一見正常にインストールされたかのように見えます。しかし、 実際に起動してみると「××パッケージが破損しています」(←ちょっと表現が違うかもしれません)というエラーメッセージが続出します。

「あ、ベータ版入れてあったの忘れてた・・・」

ベータ版をアンインストール(マイクロソフトで、アンインストール用のソフトが用意されています)して、もう一度正式版を修正インストールしようとすると、

「××パッケージが破損しています」

のエラーメッセージが出てインストールできません。面倒くさいけど、正式版も完全に アンインストールしよう!

ところが、コントロールパネルから2005をアンインストールしようとしても、同じメッセージが出て、アンインストールもできなくなります。(こりゃあ悲惨です)

さて、多大な時間を浪費してやっとインストールが成功してみると、次々に難問が出てきます。

やたら型チェックがうるさい

MessageBox(hWnd, "abc", "def", MB_OK);

は、エラーとなります。ダブルクォートの部分をTEXTマクロでくくる必要があります。 これが、面倒くさい人はソリューションのプロパティで「文字セット」を「設定無し」に設定します。ま、このくらいは仕方ないでしょう。

やたらセキュリティが厳しくなった

たとえば、

char str[16];
...
gets(str);
などというプログラムを書こうものなら、「'gets' が古い形式として宣言されました。」と言われます。

ユーザーが長い文字列を入力すると、バッファからあふれて、プログラムがハングアップしますね。「じゃあどうすりゃいいの」ということになります。ヘルプによると

char *gets_s( 
   char *buffer,
   size_t sizeInCharacters
);
という、新しい関数を使うことが奨められています。

この他に「str何とか」のたぐいの関数もほとんどが、「str何とか_s」という関数を使わなくてはいけなくなります。「_s」は「セキュリティ」のsだそうです。

と、いうことはC言語の伝統的なプログラムは、ほとんどすべてを書き直す必要が出てきました。これは、大変なことです。

今までの、C言語の教科書に出ている関数は大部分が使えなくなってしまいます。

既存の巨大なプログラムを、2005でバージョンアップするときはどうしたらよいのでしょうか。

2005のスタートページに、「既存のコードから新しいプロジェクトへ」という項目が有ります。どうやら、自動で書き直してくれるツールなのでしょうか。

試しに使ってみたところあまりうまくいきません。(筆者の使い方が悪いのかもしれません)

さて、既存のプログラムを2005で今まで通りビルドしたい!!それもあまり手間暇掛けずに!!! そんな時は、奥の手があります。

そうです!!pragmaという強い味方(??)がありました。

#pragma warning(disable : 4996)
ソースファイルの先頭に、この1文を書き加えます。そうすると、今までのコードを 今まで通りワーニングやエラー無しで通してくれます。

ま、これはあくまでも応急処置なので、セキュリティの面からいうとお奨めはできませんが・・

新しくプログラムを書くときは「ナンタラ_s」関数のお世話になりましょう。


[総合INDEX]
Update 12/Feb/2006 By Y.Kumei