我能夠產生一個可編譯的代碼片段,將結構傳遞給函數,但是當我試圖使用'傳值'時,我的代碼就崩潰了。我怎樣才能通過值的文件通過結構
我已經看過如何跨多個文件使用相同的格式化結構,但我不知道按值傳遞函數時它是否有任何不同?
注:這是寫在Arduino的IDE中的C++
我通過地址傳遞代碼如下:
passingStructs.ino
#include "a.h"
#include "b.h"
myStruct volatile structure1;
void setup() {
}
void loop() {
structure1.foo = 7;
structure1.bar = 11;
int lower = minusData(&structure1);
int higher = addData(&structure1);
}
啊:
#include "b.h"
#ifndef __a_h
#define __a_h
//prototype functions
int addData(struct myStruct *structureC);
#endif //__a_h
a.cpp:
#include "a.h"
#include "b.h"
int addData(struct myStruct *structureC) {
int x = structureC->foo;
int y = structureC->bar;
return (x + y);
}
b.h:
#ifndef __b_h
#define __b_h
//Define structure
typedef struct myStruct {
int foo;
int bar;
};
//Prototype functions
int minusData(struct myStruct *structureC);
#endif //__b_h
b.cpp:
#include "b.h"
myStruct structureC;
int minusData(struct myStruct *structureC) {
int x = structureC->foo;
int y = structureC->bar;
return (x - y);
}
然而如果我使用 INT更高=廣告
DDATA(structure1); 在.ino文件和
int addData(struct myStruct structureC) {
int x = structureC.foo;
int y = structureC.bar;
return (x + y);
}
與相同的原型在頭文件中的a.cpp文件,編譯器會拒絕代碼說
no matching function for call to ‘myStruct::myStruct(volatile myStruct&)’
什麼想法?
'__a_h'是被保留以執行的標識符。通過定義它,你譴責你的程序有未定義的行爲。 – user2079303
這個問題似乎與C語言無關。 – user2079303
你的'a.h'是否有'addData'的值超載原型? – SergeyA