#ifdef ???
// code for VC++ 2010 compiler
#else
// code for later compiler versions
#endif
可以使用什麼宏而不是???
?我不關心較舊的編譯器版本。區分VC++ 2010和更高版本的編譯器版本
#ifdef ???
// code for VC++ 2010 compiler
#else
// code for later compiler versions
#endif
可以使用什麼宏而不是???
?我不關心較舊的編譯器版本。區分VC++ 2010和更高版本的編譯器版本
#if (_MSC_VER == 1600)
//Visual C++ 2010 compiler code here...
應該做你想做的。從這裏:How to Detect if I'm Compiling Code With Visual Studio 2008?
對於VS2010或更高版本:
#if _MSC_VER >= 1600
由於C/C++編譯器附帶VS2010是版本16.00.x(如由cl.exe
在命令行上顯示)。
見http://msdn.microsoft.com/en-us/library/b0084kay%28v=vs.100%29.aspx
爲完整的某些措施:
Visual Studio _MSC_VER
version value
============= ===========
6 1200
2002 1300
2003 1310
2005 1400
2008 1500
2010 1600
2012 1700
2013 1800
我可能也會嵌套檢查,以便覆蓋「v16」(顯示警告),v16和v16以後的「問題」...中的三個選項。 – icabod
說實話,我沒有得到這個問題 – billz
[谷歌是你的朋友(http://msdn.microsoft.com /en-us/library/b0084kay.aspx)。具體來說,看一下'_MSC_VER'類型的宏。請注意,它們使用_compiler_版本,而不是IDE版本。 – icabod
@billz:例如,代碼行'TestClass(const TestClass&)= delete;'不是在VC++ 2010中編譯的,但我想在VC++ 2012和VC++ 2013編譯器中使用它。所以,當使用VC++ 2010時,我需要一些預編譯器宏來排除這一行。 –