c++ - 模板<T类> : error: 'T' does not name a type

标签 c++ visual-studio arduino visual-studio-2015 visual-c++-2010

我正在尝试在支持 Arduino (Visual Micro) 的 Visual Studio 中编译一些在 Arduino IDE 中编译良好的代码。这是有问题的代码:

template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
    const byte* p = (const byte*)(const void*)&value;
    unsigned int i;
    for (i = 0; i < sizeof(value); i++)
          EEPROM.write(ee++, *p++);
    return i;
}

template <class T> int EEPROM_readAnything(int ee, T& value)
{
    byte* p = (byte*)(void*)&value;
    unsigned int i;
    for (i = 0; i < sizeof(value); i++)
          *p++ = EEPROM.read(ee++);
    return i;
}

我得到的错误是:

app.ino:43:40: error: 'T' does not name a type
:int EEPROM_writeAnything(int ee, const T& value)
app.ino:43:43: error: ISO C++ forbids declaration of 'value' with no type [-fpermissive]

有人能给我指出正确的方向吗?

谢谢。

最佳答案

我想我得到了答案。您需要在 Visual Studio 中手动添加函数声明。

template <class T> int EEPROM_writeAnything(int ee, const T& value);
template <class T> int EEPROM_readAnything(int ee, T& value);

但是 Arduino IDE 会预处理您的源代码并在后台自动为您添加这些代码。所以它在 Arduino IDE 中工作。

提示:当您在 arduino IDE 中启用详细输出时,请引用保存编译期间生成的中间文件的临时路径。它应该类似于 %temp%\build0094e6ca87558f1142f08e49b0685193.tmp\sketch 。它应该有以下语句。

#line 2 "C:\\Users\\Sound\\Documents\\Arduino\\sketch_mar10d\\sketch_mar10d.ino"
template <class T> int EEPROM_writeAnything(int ee, const T& value);
#line 11 "C:\\Users\\Sound\\Documents\\Arduino\\sketch_mar10d\\sketch_mar10d.ino"
template <class T> int EEPROM_readAnything(int ee, T& value);
#line 21 "C:\\Users\\Sound\\Documents\\Arduino\\sketch_mar10d\\sketch_mar10d.ino"

要了解更多信息,请阅读 here .

关于c++ - 模板<T类> : error: 'T' does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898926/

相关文章:

C# 转换抛出异常

将 IP 或 MAC 地址从字符串转换为字节数组(Arduino 或 C)

c# - Visual Studio 2008 中重构菜单的快捷键(重命名、 "using"等)?

java - 如何使用像素数组形成字符串并读取数组的所有字符值

c - Arduino编译器在C库中找不到已实现的方法

c++ - 重载类实例变量

c++ - 如何让 C++ 堆栈具有多种数据类型?

c++ - 如何在 QT 中逐步加载小部件?

c++ - 为什么迭代器没有被取消引用为左值

visual-studio - 从 VS 项目中删除资源图像的正确方法是什么?