VC2008はStd版の方がPro版より高機能?
VC2008と言いながら実際に試したのはVisual Studioのお話。
VCのコンパイラ(cl.exe)には「/analyze」というC++の静的コードレビュー機能があります。
これをVS2008 StandardEditionで指定してみます。
ターゲットにするソースは以下。
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a[10]; int b[20]; memcpy(a, b, sizeof(b)); return 0; }
a[10]に対してb[20]のサイズをコピーしようとしているのでスタックを破壊する悪いコードです。
これをビルドすると
warning C6202: Buffer overrun for 'a', which is possibly stack allocated, in call to 'memcpy': length '80' exceeds buffer size '40'
バッファーオーバーランするからやめなよって叱ってくれます。
不思議なのはこの静的コードレビュー機能が使えるエディションです。
StandardEditionでは使えましたが、ProfessionalEditionでは使えません。
というか、本来はTeamSuiteにのみ付属する機能のようで、Std版で使えるのが不思議って所ですね。
さらには無償で使用できるWindowsSDKに含まれるコンパイラでも「/analyze」オプションは使用できます。
まとめると
使える | 使えない |
WindowsSDK(無償) | VC++ 2008 ExpressEdition(無償) |
Visual Studio 2008 StandardEdition(やや安い) | Visual Studio 2008 (結構高い) |
Visual Studio 2008 TeamSuite(めちゃ高い) |
コンパイラ本体の機能で比較するとわけの分からない序列になってます。
まぁ、この機能が使いたければWindowsSDK使っとけばいいんじゃない?って事で。