ATL/MFC in Windows Server 2003 SP1 Platform SDK may be DEPRECATED
菊池さんのとこより.
某氏に言われて見てきた 某掲示板の某スレ
未記入 氏が最も正しい事を言ってるけど、仕様変更があったらどうこうに素直に付き合ってるのが…
仕様変更がかかってダメになった物には素直に Obsolete を付けましょう。(.NETならね、JavaにはJ2SE5.0から@Deprecatedが追加されますね)
そして、出たワーニングにさっさと対処しましょう。
Obsoleteの無い言語なら(C++/Java)、メソッド名を変えてコンパイラに食わせましょう。直す場所なんてコンパイラが教えてくれます。
ダメになったものをズリズリと使い続けて延命策を講じるのが間違いです。
コメントにぐだぐだと書く代わりに属性使うのは時代の変化に見えますね.CodeDOM 形式でデータを格納するソース管理ツールがあったらかなり色々なことができそうですけど.
これを見てやっぱり書いておくことにしたのが ATL/MFC の話.
Visual C++ 2005 Express Edition 絡みで,「Windows Server 2003 SP1 Platform SDK に ATL/MFC が入っている」という話がちらほら紹介されてますが,Visual C++ 2005 の上位 Edition と同等の環境が構築できるわけでは無いことに注意してください.
まず,Platform SDK そのものについてはほとんど違いはありません.フルインストールした Windows Server 2003 SP1 Platform SDK と比較してみたところ,Visual C++ 2005 に付属する Platform SDK は Windows Server 2003 SP1 Platform SDK から一部のファイルを抜いたもののようです*1.
次に問題の ATL/MFC の違いについて.以下のように Windows Server 2003 SP1 Platform SDK に付属するものはだいぶバージョンが古いようです.
_MFC_VER | _ATL_VER | |
---|---|---|
Windows Server 2003 SP1 Platform SDK | 0x0600 | 0x0300 *2 |
Visual C++ .NET 2003 | 0x0710 | 0x0710 |
Visual C++ 2005 | 0x0800 | 0x0800 |
ちなみに ATL/MFC 7.1 から 8.0 の変更点については以下参照のこと.
http://msdn2.microsoft.com/en-us/library/ms235433.aspx
_ATL_INSECURE_DEPRECATE 及び _AFX_INSECURE_DEPRECATE の追加と,Header Annotations (id:NyaRuRu:20050826#p2)への対応が大きいと思います.
最新版の存在や,最新版でどのような修正が行われたかを知らせずに,単に無償ダウンロードできるという理由で古いライブラリを奨めるのはちょいと再考して頂きたいですな.