
Структури в AvrGCC (-std=gnu99)
(Последните 2-3 дни задръстих с лични съобщения колега от форума с подобни въпроси. Благодарение на неговата любезност и търпение до голяма степен ми се изясни концепцията на C дефинирането на данни и функции, но за основа ползвам проект, който не отговаря на книгите, затова, моля пояснете

)
Потърсих пояснения, но са различно описани в 2.5 книги, които имам, в електронните книги, които съм изтеглил, по форумите, в които питах
А е още по-странно в проекта, който ползвам (от един германец - FAT16/FAT32 система за SD MMC карти за ATMega - най-долу съм дал линк и сорсове).
Вероятно е елементарно, начинаещ съм в C и не ми стана ясно,.
Става дума за дефиниране на структури.
Въпросите са следните:
1. Каква е разликата между дефинициите без typedef (a) и с typedef, като с typedef има поне два начина (b) и (c):
a)
b)
c)
Едната разлика е, че типа след typedef може да се ползва по-късно, но немецът е ползвал типа и без typedef
Спокойно си дефинира по (a) и след това пише:
и си ползва z катo структура (например z->x).
2. Немецът си е декларирал структурите в fat.c (без typedef - както е в 1(а)), но, за да са му достъпни в fat.h (където са хедърите на функциите, които ползват структурите) е добавил дублиране на дефинициите от вида:
Това е ОК и неговият пример върви, но в трети файл (например main.c), където са #include fat.h се получава грешки при ползване на полета от така дефинираните структури.
Но, ако структурите се предват към fat.c като параметри на функции - няма проблеми.
Вероятно ще кажете, че стила на дефиниране на структури без typedef не е добър, но така го е решил човека и аз трябва да се оправям
Това е сайта с оригинала
По-долу атачвам същия оригинал с добавени проектни файлове за AvrStudio4 и AvrStudio5, както и работеща симулация за Протеус (вкл 100МБ MMC карта - в RAR не заема място

- за да тръгне - може да се наложи да се уточнят пътища в симулацията - до hex файла и до файла с съдържанието на MMC картата)