Please,
Why does:
// Test module Ex_mod
struct SA {
int SAIntFld1;
int SAIntFld2;
}
bool AddEle(ref void* StartPtr, SA PayLoad1) {
import core.stdc.stdlib : malloc;
struct Ele {
SA PayLoad;
Ele* EleNxtPtr;
Ele* ElePrvPtr;
}
Ele* ElePtr;
Ele* wkElePtr;
return true;
}
imported into:
// Test harness
struct SA {
int SAIntFld1;
int SAIntFld2;
}
void main() {
import std.stdio: writeln;
import Ex_mod;
SA SAVar;
void* SA_StartPtr = null;
SAVar.SAIntFld1 = 3;
SAVar.SAIntFld2 = -5;
if (AddEle(SA_StartPtr, SAVar)) {
writeln("Element linked");
} else {
writeln("Element not linked");
}
}
Fail with:
ex_main.d(21): Error: function `Ex_mod.AddEle(ref void* StartPtr, SA PayLoad1)` is not callable using argument types `(void*, SA)`
ex_main.d(21): cannot pass argument `SAVar` of type `ex_main.SA` to parameter `Ex_mod.SA PayLoad1`
When eliminating the import via:
// Test harness
struct SA {
int SAIntFld1;
int SAIntFld2;
}
bool AddEle(ref void* StartPtr, SA PayLoad1) {
import core.stdc.stdlib : malloc;
struct Ele {
SA PayLoad;
Ele* EleNxtPtr;
Ele* ElePrvPtr;
}
Ele* ElePtr;
Ele* wkElePtr;
return true;
}
void main() {
import std.stdio: writeln;
// import Ex_mod;
SA SAVar;
void* SA_StartPtr = null;
SAVar.SAIntFld1 = 3;
SAVar.SAIntFld2 = -5;
if (AddEle(SA_StartPtr, SAVar)) {
writeln("Element linked");
} else {
writeln("Element not linked");
}
}
works correctly?