C++ MSVC14.0 での WIN32マクロについて
はじめまして.質問を見ていただいてありがとうございます.
私は最近,MSVC12.0(以降VC12)からMSVC14.0(以降VC14)への移行を始めた者です.
症状と原因
VC12では動作できていたオープンソースのライブラリ(とあるカメラ制御APIです)がVC14に移行した途端,ヘッダファイルから大量のエラーをくらいました.
VC12とVC14での違いを調べていたところ,どうやらプラットフォームを確認するヘッダ内の挙動が変わっているようでした.
私が使っているそのライブラリは,
#if defined(WIN32) || defined(WIN64)
// Windows 32-bit and 64-bit
// Some def. here
#elif defined(MAC_OSX)
// Mac OSX
#else
// Linux and all others
// Using GCC 4 where hiding attributes is possible
// Some def. here
#endif
とプラットフォームごとに別々な定義をしています.
VC12では,WIN32が定義されていましたので,Windowsのための定義を通りました.
しかし,VC14ではWIN32が定義されておらず,代わりに_WIN32が定義されていました.
ちなみに,VC12にも_WIN32は定義されているようでした.
質問
このエラーは,「VC14でWIN32から_WIN32に完全に移行したけれど,使っているライブラリがそれに対応していない」ことが原因だと考えているのですが,正しいでしょうか.
また,WIN32と_WIN32の違いや,_WIN32になった背景などがわかる方がいれば教えていただきたいです.
長くなってしまいましたが,よろしくお願いします.