2014-10-30 100 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