定义struct并用作参数

时间:2015-03-23 00:50:43

标签: c++ c struct arduino

我正在研究我的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"然后它按原样编译。 我不清楚为什么我可以声明和使用该结构的变量,但是我可以将该结构用作参数类型。是"结构" type不作为参数使用的类型?

感谢。

1 个答案:

答案 0 :(得分:1)

因为在c中你需要typedef来实现这一点,否则你需要使用struct来引用结构。

我建议反对typedef以及结构名称中的_t,但如果你想这样做,就这样做

typedef struct myStruct_t {
    byte var1;
    byte var2;
} myStruct_t;

并且不使用全局变量,将变量作为参数传递。