Вы объявили свою структуру между (или, возможно, после) объявлениями f2
и f1
. Переместите объявление структуры так, чтобы оно предшествовало обоим объявлениям.
То есть:
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);
}
компилируется без ошибок, но
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);
}
не скомпилируется, потому что f2
не может узнать, что такое struct user_data_s
.
Возможно, вы привыкли к программированию на языке более высокого уровня, который позволяет размещать ваши объявления / определения практически везде (например, C # или Python), но, к сожалению, C компилируется строго сверху вниз.