Amazon 初売り

« VisualStudio 2013→2017のバージョンアップに伴う問題の対応 | トップページ | 2019年(平成31年)の恵方 »

2019.02.02

_MSC_VERの話(2019年01月末時点)

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

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)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

トラックバック

この記事へのトラックバックの一覧です: _MSC_VERの話(2019年01月末時点):

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。