VS2010编译器定义

时间:2012-08-01 07:34:52

标签: c++ visual-studio conditional-compilation

在gcc中,我正在编写friend class FriendMaker<T>::Type,但Visual Studio需要friend FriendMaker<T>::Type。所以我认为是时候去编译特定了。

那么ifdefVisual Studio我需要什么?我目前正在使用2010年,但我可能会改用2012年。

3 个答案:

答案 0 :(得分:17)

使用宏_MSC_VER。要检查编译器是否为VS2010或更高版本:

#if _MSC_VER >= 1600

以下是VS的不同版本的值:

  • VS 2003(VC7.1):1310
  • VS 2005(VC8):1400
  • VS 2008(VC9):1500
  • VS 2010(VC10):1600
  • VS 2012(VC11):1700

答案 1 :(得分:0)

只需对两个编译器使用friend class ...语法。没有friend ...关键字的class语法实际上无效; VS2010不抱怨它是错误的。

请参阅this question

答案 2 :(得分:0)

我认为您需要使用以下代码进行交叉编译:

template <typename T> class B;

template <typename T>
class A
{
    friend typename B<T>::V;
};