c++ - 定义结构并用作参数

标签 c++ c struct arduino

<分区>

我正在开发我的 Arduino 项目,这是我唯一使用的 C/C++ 编译器。 我很困惑为什么我不能将结构用作我的函数参数的类型。

不确定这是否特定于 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”类型不作为参数使用的类型吗?

谢谢。

最佳答案

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

我建议不要使用 typedefing,也不要使用结构名称中的 _t,但如果您想要那样做就可以了

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

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

关于c++ - 定义结构并用作参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29201740/

相关文章:

c - 从 .txt 字符中减去添加的数字不会反向加密?

c - 使用 void 指针和类型参数的 C 中多种类型的排序函数

c - 如何将字符串扫描到结构数组?

c++ - 如何用纯 C++ 编写一个执行我的 javascript 的 IE BHO

c++ - 如何知道我使用的Linux操作系统是否有特定的系统调用?

c++ - 如何重定向用 SWIG 包装并暴露给 Python 的 C++ 例程的标准流?

c++ - 从系统表中获取节点状态

c++ - 使用 gdb 进行调试 - (gdb) "x/s pointer"输出

C 结构指针问题

无法打印可能在 C 中使用 typedef 构造的 MyType 中的值