有没有办法知道我是否在特定的Microsoft Visual Studio版本下编译?
当前回答
在visual studio中,去帮助| about,看看你用来编译应用程序的visual studio版本。
其他回答
在visual studio中,去帮助| about,看看你用来编译应用程序的visual studio版本。
_MSC_VER应该定义为特定的版本号。您可以对它使用#ifdef,也可以使用实际的define并进行运行时测试。(如果出于某种原因,你想根据编译器的不同来运行不同的代码?是的,也许你在找#ifdef。:))
作为一个更一般的答案,http://sourceforge.net/p/predef/wiki/Home/维护了一个宏列表,用于检测特定的编译器、操作系统、体系结构、标准等。
通过使用_MSC_VER宏。
是的,_MSC_VER是一个宏,它会让你得到编译器的版本。Visual c++的最新版本的形式是<compiler-major-version>.00。<build-number>,其中00是副编号。所以_MSC_VER将计算为<主版本><小版本>。
你可以使用这样的代码:
#if (_MSC_VER == 1500)
// ... Do VC9/Visual Studio 2008 specific stuff
#elif (_MSC_VER == 1600)
// ... Do VC10/Visual Studio 2010 specific stuff
#elif (_MSC_VER == 1700)
// ... Do VC11/Visual Studio 2012 specific stuff
#endif
它出现在编译器的连续版本之间的更新,没有修改编译器的小版本,所以下面的代码是不需要的:
#if (_MSC_VER >= 1500 && _MSC_VER <= 1600)
// ... Do VC9/Visual Studio 2008 specific stuff
#endif
访问更详细的版本信息(如编译器构建号)可以使用其他内置的预处理器变量在这里找到。
推荐文章
- Shared_ptr转换为数组:应该使用它吗?
- Printf与std::字符串?
- 禁用复制构造函数
- Visual Studio复制项目
- 只接受特定类型的c++模板
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 如何在iis7应用程序池中设置。net Framework 4.5版本
- c++ 11中的递归lambda函数
- 在c++中指针使用NULL或0(零)吗?
- 在c++中,如何将int值附加到字符串中?
- 就性能而言,使用std::memcpy()还是std::copy()更好?
- 为什么布尔值是1字节而不是1位?
- 四舍五入到一个数字的最接近倍数
- 模板默认参数
- c++ auto关键字。为什么它是魔法?