2014-10-30 84 views
2

我之前使用的是旧版本的visual studio,现在我切换到visual studio 2012,并且在代码中出现错误。它说:错误2146在visual studio 2012 C++

错误C2146:语法错误:缺少“)”之前标识符“R”

我怎样才能解决这个问题......我一直在寻找了很长的一个解决方案时间。该错误是在代码的第一线......

template <class T1, class T2> inline void va_copy(T1& r, const T2& v) 
{ 
    r[0] = v[0]; 
    r[1] = v[1]; 
    r[2] = v[2]; 
} 
+1

'va_copy'是从'cstdarg'报头中的宏防止预处理器从扩展宏,所以我想它解释'va_copy(T1&R,常量T2&v)'作为宏调用 – 2014-10-30 10:11:42

+0

更好,请使用替代函数名称。 – 2014-10-30 10:39:32

回答

3

va_copystdarg.h定义一个宏,这就是为什么你得到错误。可以通过添加一对括号()的函数名

#include <iostream> 
#include <stdarg.h> 

template <class T1, class T2> inline void (va_copy)(T1& r, const T2& v) 
{ 
    r[0] = v[0]; 
    r[1] = v[1]; 
    r[2] = v[2]; 
} 

int main() { 
    int a[] = { 32, 33, 34 }; 
    const int b[] = { 22, 23, 24 }; 
    (va_copy)(a, b); 
} 
+0

我最近有同样的问题。 – 2014-10-30 12:21:17