Arduino:struct指针作为函数参数

Pet*_*r B 1 arduino arduino-ide

下面的代码给出了错误:

sketch_jul05a:2: error: variable or field 'func' declared void
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如何将指针作为函数参数传递给结构?

码:

typedef struct
{ int a,b;
} Struc;


void func(Struc *p) {  }

void setup() {
  Struc s;
  func(&s);
}

void loop()
{
}
Run Code Online (Sandbox Code Playgroud)

A.H*_*.H. 5

问题是,Arduino-IDE会自动将其转换为C,如下所示:

#line 1 "sketch_jul05a.ino"
#include "Arduino.h"
void func(Struc *p);
void setup();
void loop();
#line 1
typedef struct
{ int a,b;
} Struc;


void func(Struc *p) {  }

void setup() {
  Struc s;
  func(&s);
}

void loop()
{
}
Run Code Online (Sandbox Code Playgroud)

这意味着Struc在声明中使用func之前Struc是已知的C编译器.

解决方案:将定义移动Struc到另一个头文件中并包含此文件.

主要草图:

#include "datastructures.h"

void func(Struc *p) {  }

void setup() {
  Struc s;
  func(&s);
}

void loop()
{
}
Run Code Online (Sandbox Code Playgroud)

并且datastructures.h:

struct Struc
{ int a,b;
};
Run Code Online (Sandbox Code Playgroud)