struct t_MyStruct {
int varA;
float varB;
float varC;
};
void myFunc_1(int param1, t_MyStruct param2){
Serial.println("=================================");
Serial.println("param1: " + String(param1));
Serial.println(
"param2 varA: " + String(param2.varA) + ", "
+ "varB: " + String(param2.varB) + ", "
+ "varC: " + String(param2.varC)
);
}
void myFunc_2(int param1, t_MyStruct *param2){
Serial.println("===== USING REFERENCE =========");
Serial.println("param1: " + String(param1));
Serial.println(
"param2 varA: " + String(param2->varA) + ", "
+ "varB: " + String(param2->varB) + ", "
+ "varC: " + String(param2->varC)
);
}
t_MyStruct& createStruct(){
static t_MyStruct myStruct; //MUST BE STATIC TO PERSISTS
myStruct.varA = 100;
myStruct.varB = 100.1;
myStruct.varC = 100.2;
return myStruct;
}
t_MyStruct wire_struct;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
wire_struct = createStruct();
}
void loop() {
// put your main code here, to run repeatedly:
t_MyStruct varStruct_1 = {22, 12.3, 11.3};
myFunc_1(42, varStruct_1);
t_MyStruct *varStruct_2;
varStruct_2 = new t_MyStruct({22, 12.3});
/*
varStruct_2->varA = 99;
varStruct_2->varB = 11.1;
varStruct_2->varC = 22.2;
*/
myFunc_2(81, varStruct_2);
myFunc_1(99, wire_struct);
delay(1000);
}