В последнее время я пытался работать с непрозрачными указателями в качестве концепции программирования, и одна из главных проблем, с которыми у меня возникли трудности, - это выяснить, что доступно или не доступно для других файлов. В предыдущем вопросе мне не удалось создать непрозрачный указатель на структуру, и хотя в ответе объяснялось, как это исправить, я все еще не совсем понимаю, где я ошибся.
Я думаю, что если структура определена в file2.c
, file1.c
может использовать ее, если оба файла включают header.h
, что включает в себя объявление структуры? Это не совсем имеет смысл для меня. header.h
используется обоими файлами, так что я могу видеть, как они получат доступ к содержимому в нем, но я не понимаю, как они будут использовать его для доступа друг к другу.
Когда я начал программировать, я Я подумал, что это довольно просто, когда у вас есть программные файлы, они не могут получить доступ друг к другу, и эти программные файлы могут #include заголовочные файлы с определениями и объявлениями в них (например, file1.c
имеет доступ к переменным / функциям / et c. определено в header.h
). Оказывается, я ошибался, и все немного сложнее.
Итак, насколько я могу судить, func()
, определенный в header.h
, может использоваться file1.c
без объявления в file1.c
, если file1.c
включает header.h
. В отличие от var
, определенного в header.h
, который должен быть объявлен в file1.c
с ключевым словом extern
? И я думаю, что если var
определено в file2.c
, file1.c
может использовать его, если его объявит extern, даже если ни file1.c
, ни file2.c
не включают header.h
?
Я прошу прощения, если предыдущие абзацы не имеют смысла, у меня возникли сложности с попыткой описать то, что меня смущает. Во что бы то ни стало, отредактируйте это, если вы можете исправить ошибки или еще что-то.
Книги и веб-страницы, кажется, не помогают вообще. В конечном итоге они дают мне неправильные представления, потому что я уже чего-то не понимаю и делаю неправильные выводы, или они выдвигают концепции, которые еще больше меня отталкивают.
То, что я смотрю, что я поиск - это ответ, который все это ставит передо мной. Например, «это может получить доступ к этому при данных обстоятельствах» , «это не может получить доступ к этому» .