I'm getting this error:
transform.c:23: warning: ‘struct user_data_s’ declared inside parameter list transform.c:23: warning: its scope is only this definition or declaration, which is probably not what you want
Which I think is because I have a struct that contains a struct.
This is what I am trying to do:
void f2(struct user_data_s* data) { printf("Number %i\n", data->L); } void f1(struct user_data_s* data) { printf("Number %i\n", data->L); f2(data); }
The printf in f1 works, but the line
void f2(struct user_data_s* data) {
gives the error.
Does anyone know how I can fix this?
You have declared your struct in between (or possibly after) your declarations of f2
and f1
. Move your struct declaration so that it comes before both declarations.
That is to say:
struct user_data_s { int L; }; void f2(struct user_data_s* data) { printf("Number %i\n", data->L); } void f1(struct user_data_s* data) { printf("Number %i\n", data->L); f2(data); }
compiles without errors, but
void f2(struct user_data_s* data) { printf("Number %i\n", data->L); } struct user_data_s { int L; }; void f1(struct user_data_s* data) { printf("Number %i\n", data->L); f2(data); }
will not compile, because f2
has no way to know what a struct user_data_s
is.
You might be used to programming in a higher-level language that lets you place your declarations/definitions pretty much anywhere (such as C# or Python), but unfortunately, C is compiled strictly top-to-bottom.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With