I declare a new struct with the name of “Struct”
I have a generic function that takes in an argument “void *data”.
void Foo(void *data)
I pass an instance of “Struct” into the generic function.
Struct s;
Foo(&s);
I want to access one of the properties of the struct in the function.
void Foo(void *data) {
char *word = (char*) data.word;
}
It’s not allowed because it doesn’t recognize data as a valid struct.
I even try to declare the data as the struct type first, and I get an error.
void Foo(void *data) {
Struct s = (Struct) data;
char *word = s.word;
}
I get “conversion to non-scalar type requested”.
First of all, you should turn on your compiler’s warning flags (all of them). Then you should pass a pointer to your
Structand use something other thanstructas a variable name:Then, in
Foo:You can’t convert non-pointer types to and from
void*like you’re trying to, converting pointer types to and fromvoid*is, on the other hand, valid.