_MSC_VERの話(2019年01月末時点)
Visual Studioのバージョン間の違いについて(2008 → 2012)
でチラッと書いたことがあるんだけど
初音ミク冒険記のソースコードには
下記のようなロジックがある。
#if 1900 > _MSC_VER && _MSC_VER >= 1700 #include "EffekseerForDXLib.h" #else #error VisualStudio(C++)2012,2013のみ対応しています。 #endif
_MSC_VERという定義済みプリプロセッサマクロは、
ビルドする時にVisualStudioのバージョンチェックをする時に使う。
Windows版最初の時の初音ミク冒険記のソースコードは、
VisualStudio 2008で作られているので
VisualStudio 2008以降の
バージョンや_MSC_VER関連をまとめてみた。
参考:_MSC_VERマクロの値 (Visual Studio 2017まで)
Visual Studioのバージョン | 内部バージョン番号 | _MSC_VER の値 |
---|---|---|
Visual Studio 2008 | 9.0 | 1500 |
Visual Studio 2010 | 10.0 | 1600 |
Visual Studio 2012 | 11.0 | 1700 |
Visual Studio 2013 | 12.0 | 1800 |
Visual Studio 2015 | 14.0 | 1900 |
Visual Studio 2017 | 14.1 | 1910 |
なので
#if 1900 > _MSC_VER && _MSC_VER >= 1700 #include "EffekseerForDXLib.h" #else #error VisualStudio(C++)2012,2013のみ対応しています。 #endif
このコードはVisualStudio 2012,2013の場合のみ
EffekseerForDXLib.hがインクルードされる。
実は、このようなロジックが、
初音ミク冒険記のEffekseer関連のソースに多数ある。
このため、
#if 1900 > _MSC_VER && _MSC_VER >= 1700
を
#if MSC_VER >= 1900
にしようとしたら、該当箇所全部を直さないといけない。
まぁ、一括置換すれば良いという話もあるんだが
そもそもバージョンアップのたびに
複数箇所を修正するのはメンドイ。
修正漏れも出てきたりしそうだしね。
どのみち、今回は該当箇所を全部直す必要があるので
次のVisualStudioのバージョンアップの時は
修正箇所がヘッダファイルを1箇所修正するだけで良い形にしとこう。
今のところ、自作のロジックではEffekseer関連だけなので
ヘッダファイルでは、下記のようにしておく。
#if MAIN #if _MSC_VER >= 1900 int isUseEffekseer = TRUE; #else int isUseEffekseer = FALSE; #endif #else extern int isUseEffekseer; #endif
そしてEffekseer関連のソースでは、下記のようにしておく。
if(isUseEffekseer == FALSE){ // 何もしないで終了 return(); }
こんな感じにしとけば、修正箇所が絞られて
あちこちに#ifdefを使わなくて済んでスッキリしそうだね。
| 【固定リンク】 | 【コメント (0)】 | 【トラックバック (0)】
このエントリーへのリンク
トラックバック
この記事へのトラックバックの一覧です: _MSC_VERの話(2019年01月末時点):
コメント
このブログの新着コメントをRSSリーダに登録する為のxml