Arduino struct没有命名类型错误

时间:2015-06-16 16:15:53

标签: c++ arduino

在Arduino IDE中,我可以使用自定义类型创建变量,但不能从函数返回自定义类型:

这个编译

struct Timer
{
  Timer()
  {
  }
};

Timer t;
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
int main()
{
  return 0;
}

这会产生Timer does not name a type错误:

struct Timer
{
  Timer()
  {
  }
};

Timer get_timer()
{
  return Timer();
}

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
int main()
{
  return 0;
}

两者都在Orwell Dev-Cpp编译

我使用MEGA-2560

1 个答案:

答案 0 :(得分:4)

您可以阅读here关于Arduino IDE的构建过程。

在编译之前,需要将草图转换为有效的C ++文件。

此转换的一部分是为所有函数声明创建函数定义。

在定义Time之前,这些定义放在文件的顶部。因此,在声明get_timer时,尚未声明类型Time

解决此问题的一种方法是将所有类型定义放在单独的.h文件中,并将其包含在草图中。