我正在开发我的Arduino项目,这是我唯一使用的C/C++编译器。我不明白为什么我不能在函数参数上使用struct作为类型。
不确定这是特定于Arduino编译器设计,还是一般的C/C++编程。
struct myStruct_t {
byte var1;
byte var2;
};
myStruct_t myStruct;
void setup() {
}
void loop() {
}
void myFunc(myStruct_t *myVar) {
int i = 0;
}
这会导致编译器错误:
错误:变量或字段'myFunc‘声明为空
错误:未在此范围内声明'myStruct_t‘
错误:未在此范围内声明'myVar‘
如果我注释掉"myFunc“的声明,它就会按原样编译。我不清楚为什么我可以声明和使用该结构的变量,但是我可以将该结构用作参数类型。"struct“类型不能作为参数使用的类型吗?
谢谢。
发布于 2015-03-23 00:51:30
因为在c中你需要使用typedef
来实现这一点,否则你需要使用struct
来引用结构。
我建议不要使用typedef
ing,也不要使用结构名称中的_t
,但如果您希望这样做,请执行以下操作
typedef struct myStruct_t {
byte var1;
byte var2;
} myStruct_t;
并且不使用全局变量,将变量作为参数传递。
https://stackoverflow.com/questions/29201740
复制相似问题