#c #opaque-pointers
#c #непрозрачные указатели
Вопрос:
Я новичок в C и работаю с непрозрачной структурой данных, передаваемой по двойной ссылке. Я объявил прототип структуры в cars.h как typedef struct car car
. Затем в cars.c я продолжаю определять структуру со следующими элементами:
struct car{char model;
int year; };
У меня есть функция для установки года выпуска автомобиля:
void set_year(car **my_car , int year){
*my_car->year = 1998;
}
Однако я не вижу элементы структуры, хотя set_year
и car
оба определены в car.c. Как мне правильно получить доступ к этим элементам?
* РЕДАКТИРОВАТЬ
Вот разрешение того, что задавал мой вопрос:
void set_year(car **my_car , int year){
(*my_car)->year = 1998;
}
Комментарии:
1. Что именно вы подразумеваете под «непрозрачным»? Вы не используете
void*
так как же она непрозрачна?2. Есть ли причина, по которой вы это делаете
typedef struct car car
? Я не думаю, что это хорошая идея, если вы новичок в C.3. Я не вижу никаких непрозрачных указателей. Вы хотели сказать
void* my_care
там?4. Структуры, используемые в единицах перевода (т. Е. В нескольких исходных файлах), должны быть определены в
.h
заголовочных файлах, а не в.c
файлах. Определяйте только «локальные» или «частные» структуры в.c
файлах.5. Ваша программа как есть не компилируется в GCC, потому что
**car my_char
недействительна, даже сtypedef
. Пожалуйста, перепостите свою программу без использованияtypedef
. Здесь: onlinegdb.com/B1eLoLDQw