Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 15 lis 2024, o 17:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 4 mar 2017, o 16:26 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Chodzi mi o taką strukturę:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Znajduje się ona w pliku dcf77.h
i używana jest wyłącznie w funkcji uint8_t DCF_decode(DCF_datetime *DCF_dt)

Ja zaś chcę wykorzystać poszczególne jej zmienne, więc muszę ją zadeklarować jako globalną Jak to zrobić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2017, o 16:58 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 546
Pomógł: 27

a w tym pliku .h gdzie jest ta deklaracja struktury masz takie coś extern DCF_datetime "jakaś nazwa" jak tak to wystarczy wpisać DCF_datetime "jakaś nazwa".min i masz dostęp do zmiennej min w strukturze jak nie to możesz też przez wskaźnik stworzyć wskaźnik typu DCF_datetime i już masz dostęp do struktury tylko że odwołujesz się inaczej przez -> a najlepiej jak byś obejrzał poradnik Mirka o wskaźnikach i strukturach łatwo znaleźć na "yt"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2017, o 17:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Jeśli chodzi o takie mega podstawy to pomijam już fakt, że jest to w Bluebooku ;) no ale i na blogu jest opisane jeszcze szerzej - mały artykuł - warto zaglądać na bloga - poważnie

http://mirekk36.blogspot.com/2013/07/st ... adnie.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2017, o 18:00 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Mirku! Czytałem ten rozdział w Bluebooku, jednak nie znalazłem tam odpowiedzi jasnej na moje pytanie.
Faktycznie są to mega podstawy, ale znasz mnie. Nie pojmuję wszystkiego tak w lot jak Ty, jak Inni na forum, dla tego tak często tu zaglądam i dopytuję o te podstawy.
Przeczytałem teraz wskazany przez Ciebie artykuł na blogu, jest już jaśniej ale nadal nie mogę analogicznie tego przenieść do mojego pytania.
Zrozumiałem, że ten zapis :

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jest definicją typu strukturalnego.

Chcę się dowiedzieć w jaki sposób mogę użyć zmiennej strukturalnej "min", "h" i pozostałych jako zmiennych w innych funkcjach.

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
Składnia: [ Pobierz ] [ Ukryj ]
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

Więc usuwam z bloku kodu DCF_datetime w ten sposób

Składnia: [ Pobierz ] [ Ukryj ]
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"

Więc powiedzcie proszę mi jasno jak mam zadeklarować i jak zdefiniować ten typ strukturalny. Wiem czym się różni deklaracja od definicji. Wiem na prawdę ale w odniesieniu do zmiennych. Nie wiem tylko jak to odnieść do struktur.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2017, o 19:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

Jarosław J napisał(a):
Zrozumiałem, że ten zapis :

Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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

Składnia: [ Pobierz ] [ Ukryj ]
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ę.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2017, o 20:23 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Ująłeś to idealnie tak jak jest. Trzeba się ze wszystkim przetrzeć i zmierzyć, ale żeby zrozumieć to nie wystarczy przeczytać książkę - choćby najmądrzejszą.
Dzięki za poświęcony czas - udało mi się osiągnąć to co chciałem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2017, o 22:22 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Jarosław J napisał(a):
Trzeba się ze wszystkim przetrzeć i zmierzyć, ale żeby zrozumieć to nie wystarczy przeczytać książkę - choćby najmądrzejszą.

Nie ma najmądrzejszych książek - ale dokładnie takie uzupełnienie zrobiłem na blogu i troszkę się dziwię - bo wygląda tak jakbyś i tam nie zajrzał ale może się mylę ... Jeśli nie zajrzałeś to polecam bo i tak się przyda na przyszłość przy innych ćwiczeniach i walkach ze strukturami

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO