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)
问题是,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)