Jarosław J napisał(a):
Zrozumiałem, że ten zapis :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jest definicją typu strukturalnego.
Zgadza się, ale zarazem teoretycznie tworzy zmienną o takim typie, o nazwie "DCF_dt".
Tak by się mogło wydawać bo kompilator nic nie krzyczy, że źle ale wychodzi, że jest źle, bo jeśli się nie mylę, typedef robi swoje, a kompilator tą pozorną deklarację zmienne po prostu usuwa.
Należy zrobić to tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I to faktycznie po lekturze bluebooka musi być zrozumiane, ale jak mniemam po prostu brakuj Ci praktyki i dlatego te podstawy jeszcze nie "zakorzeniły" Ci się w głowie.
To tak jak z matematyką trzeba po prostu odrabiać zadania,nawet jeśli jeszcze teoria się nie "uleżała"

Jarosław J napisał(a):
Kiedy wstawiam te zmienną do funkcji wyswietl (DCF_dt.min); otrzymuję 'DCF_dt' undeclared (first use in this function), pomimo, że mam dołączuny plik .h z tym typem strukturalnym. Znaczy to, ze muszę ją gdzieś wcześniej zadeklarować. Kiedy jednak chcę to zrobić w ten sposób
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
otrzymuję błąd, że 'DCF_datetime' redeclared as different kind of symbol
To popełniłeś dwa błędy, zamieniłeś miejscami typ i nazwę zmiennej, drugi błąd to niepotrzebnie jeszcze raz dajesz "struct".
Porównaj sobie dwie definicje:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jak widzisz masz w obu przypadkach od lewej najpierw nazwę typu, potem nazwę zmiennej.
Niestety znam z autopsji, że początkującym po prostu musi się to uleżeć, żeby swobodnie myśleć nawet o typach.
A struktura na początku to strasznie mylący zwierz

Za niedługo będziesz się śmiał, że miałeś z tym kłopot

Jarosław J napisał(a):
Więc usuwam z bloku kodu DCF_datetime w ten sposób
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
tym razem mam warninga, że "useless storage class specifier in empty declaration"
No tu już "jedziesz po bandzie"

) i zaczynasz kombinować, niestety bez zrozumienia, ale spokojnie należy ćwiczyć i ćwiczyć

.
Zamiast usunąć niepotrzebną próbę zadeklarowania zmiennej "DCF_dt ", to usuwasz nazwę definiowanego typu strukturalnego.
Spójrz zatem na poniższy kod, powinien Ci objaśnić resztę.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.