【发布时间】:2016-03-09 17:49:05
【问题描述】:
我正在尝试在支持 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]
有人可以指点我正确的方向吗?
谢谢。
【问题讨论】:
-
ISO C++ forbids declaration of "something" with no type 的可能重复项。只需添加前向声明:
template <class T> class value; -
@paulsm4 即使我添加了前向声明,我仍然会遇到同样的错误。
-
你用的是什么版本的arduino ide?从 Arduino 编译和从 Visual Studio 编译时,您可以粘贴编译命令行吗?我猜他们是不同的。 Visual Micro 只是包装了 Arduino 中使用的底层 gcc 编译器。因此,如果它在 Arduino IDE 中工作,它也应该在 Viusal 工作室中工作。
-
这可能是工具链中的某些东西...stackoverflow.com/q/18052310/3747990
-
@Niall,是的。我按照那篇文章中的建议创建了一个头文件......看起来很有效。谢谢!
标签: c++ visual-studio arduino visual-studio-2015 visual-c++-2010