我之前使用的是旧版本的 Visual Studio,现在我切换到 Visual Studio 2012,并且我的代码中出现错误。它说:
error C2146: syntax error : missing ')' before identifier '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];
}
最佳答案
va_copy
是在 stdarg.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);
}
关于c++ - Visual Studio 2012 C++ 中的错误 2146,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26650213/