Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 定义struct并用作参数_C++_C_Struct_Arduino - Fatal编程技术网

C++ 定义struct并用作参数

C++ 定义struct并用作参数,c++,c,struct,arduino,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

我正在做我的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\u t”未在此作用域中声明

错误:“myVar”未在此作用域中声明

如果我注释掉“myFunc”的声明,那么它将按原样编译。 我不清楚为什么我可以声明和使用该结构的变量,但是我可以使用该结构作为参数类型。“struct”类型是否不作为参数使用的类型


谢谢。

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

我建议不要使用
typedef
ing,也不要使用结构名称中的
\u t
,但如果您希望这样做,请这样做

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

不使用全局变量,将变量作为参数。< /p>或者选择一个,因为它们对这个代码的处理方式明显不同,足以引起您所看到的确切问题。我建议至少阅读这些问题的第一个答案:代码是有效的C++,问题是ARDUNO IDE是迟钝的,并导致类似这样的错误,试图隐藏一些C++的复杂性(有关详细信息,请参阅链接答案)。就C++而言C++ C++语言的代码,我个人的,我尽快离开它,选择构建系统,让我写实际的C++。没有C/C++是C或C++。@ Mattooiali:我们不要使用这些可鄙的词。C兼容性不是问题,默认的代码是C++(C++ 11,IrrC)。“MaTooTiali我不知道,这根本没有任何意义,这可能是一个在ARDUNO中使用的编译器,你不认为有一个C编译器是合乎逻辑的,并且没有C兼容性的东西,它是C还是C++,不管你喜欢不喜欢。我将重新措辞:OP使用的是AdUINO ID/库,就像他发布的代码一样。(ARDUNO NETAG,没有包含,Stuts/Loop=这是一个ARDION-PDE的草图),ARDIIO草图是C++,句号(ARDUINO库是用C++编写的,ARDUNO IDE使用的是AVR GCC的G++)。问题不是“你必须用C编译器写C”,因为他使用C++编译器。实际问题是“Arduino IDE延迟”,请参阅链接的答案。