c++ - Visual Studio 2012 C++ 中的错误 2146

标签 c++ visual-studio-2012

我之前使用的是旧版本的 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/

相关文章:

c++ - Arduino 字符数组到整数值

c++ - 在 CUDA 中使用指针复制类

c# - Unitests 和 VS2012 Update 2 CTP 4 的问题

c# - 从代码构建 visual studio 解决方案

visual-studio - 使用多个文件中的脚本创建 PowerScript 模块

sql-server-2008 - 使用 SSDT Publish (.dacpac) 部署非空外键架构更新

c++ - 使用Poco多线程时如何使用信号量保证顺序?

c++ - 正确处理子类过程中的 WM_PASTE

c++ - 模型中虚拟索引实现的替代方案

c++ - 仅当类具有指针成员时,Visual Studio 自动生成函数