繁体   English   中英

Visual Studio 2012 C ++中的错误2146

[英]Error 2146 in visual studio 2012 c++

以前我使用的是Visual Studio的旧版本,现在切换到Visual Studio 2012,但是我的代码出现错误。 它说:

错误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];
}

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM