在gcc中,我正在编写friend class FriendMaker<T>::Type
,但Visual Studio需要friend FriendMaker<T>::Type
。所以我认为是时候去编译特定了。
那么ifdef
对Visual Studio
我需要什么?我目前正在使用2010年,但我可能会改用2012年。
答案 0 :(得分:17)
使用宏_MSC_VER
。要检查编译器是否为VS2010或更高版本:
#if _MSC_VER >= 1600
以下是VS的不同版本的值:
1310
1400
1500
1600
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;
};