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



Teraz jest 19 kwi 2024, o 09:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 27 wrz 2019, o 07:27 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

W poradniku Mirka na blogu
http://mirekk36.blogspot.com/2013/07/st ... adnie.html
dotyczącym struktur przeczytałem fragment cytuje:
......... stwórcy C wymyślili możliwość wskazania tzw "NAZWY SKRÓCONEJ", dla nowo powoływanego do życia typu, z użyciem "typedef". Dlatego zobacz mogę to zrobić tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Widzisz? dodałem za nawiasem klamrowym skróconą nazwę "TIMIONA", musi ona być różna od jawnej nazwy struktury, w tym przypadku "IMIONA".




I teraz przeglądam sobie YB gdzie jest typ strukturalny w takiej formie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Co się stało że w tym przypadku nazwa jawna może być taka sama jak nazwa skrócona.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2019, o 10:01 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 106
Pomógł: 10

Z punktu widzenia syntaktyki języka - nie jest to problem i obydwa podejścia będą działać. W drugim przypadku ucierpi nieco czytelność i osobiście bym tego podejścia nie rekomendował.

Co do typedef to drugi przypadek porównałbym do czegoś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Można i będzie to działać... ale czy jest sens tak robić to już mocno dyskusyjne.

Dla czystości kodu osobiście użyłbym następujących konstrukcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

(static jeśli zmienna globalna a nie automatyczna)
Wtedy mamy odrobinę przejrzystszą sytuację, i do tego konsekwentnie nazwy zmiennych są zapisywane w systemie notacji np. camelCase. W oryginale zmienne ala, ola, costam i tmr są zapisane małymi literami, a zmienne IMIONA i TSTIMER są też zmiennymi i zapisane dużymi literami - co nie jest konsekwentne.

PS. Jeszcze po doczytaniu dotarło do mnie, że ta druga deklaracja może to być związane z przypadkiem jak opisany tutaj
https://stackoverflow.com/questions/168 ... meter-list
Więc mogło chodzić o specyficzny przypadek w którym konkretny typ jest użyty jako parametr wewnątrz struktury. Jeśli nie zrobi się tak jak było w oryginale, to dostaniemy warning od kompilatora

Warning its scope is only this definition or declaration, which is probably not what you want

Mam nadzieję, że to pomoże :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2019, o 16:34 
Offline
Moderator
Avatar użytkownika

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

JarekB napisał(a):
W poradniku Mirka na blogu
http://mirekk36.blogspot.com/2013/07/st ... adnie.html
dotyczącym struktur przeczytałem fragment cytuje:
......... stwórcy C wymyślili możliwość wskazania tzw "NAZWY SKRÓCONEJ", dla nowo powoływanego do życia typu, z użyciem "typedef". Dlatego zobacz mogę to zrobić tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Widzisz? dodałem za nawiasem klamrowym skróconą nazwę "TIMIONA", musi ona być różna od jawnej nazwy struktury, w tym przypadku "IMIONA".




I teraz przeglądam sobie YB gdzie jest typ strukturalny w takiej formie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Co się stało że w tym przypadku nazwa jawna może być taka sama jak nazwa skrócona.


a co ma Qurczę wspólnego pierwszy zapis wymyślony który podałeś z drugim ?

NIC

moscow napisał(a):
W drugim przypadku ucierpi nieco czytelność

To może kolega jednak lepiej się przyjrzy definicjom typów obu podanych struktur - toż jeśli porównać je rzeczowo to porównanie ma się jak pięść do nosa - tak samo jak "ucierpienie czytelności"

W pierwszym przypadku mamy strukturę z jakimiś dwoma zmiennymi typu uint16_t zaś w drugim przypadku - jedna z pozycji struktury to wskaźnik na funkcję ! ... więc czytelność (bez urazy proszę) to może ucierpieć tylko wtedy gdy ktoś nie rozumie w ogóle jeszcze tego kodu - i nie wie co to są wskaźniki na funkcje - to PO PIERWSZE

a po DRUGIE w książce czyli w YB opisuję ten mechanizm i to dokładnie - chodzi tu o możliwość powołania się w argumencie do wskaźnika na funkcję - na właśnie WSKAŹNIK na ten sam typ strukturalny.

A więc tak na przyszłość - może zanim zacznie się coś rekomendować - to może jednak lepiej - najpierw próbować to zrozumieć? ew dopytać co ten zapis oznacza? w jakim celu powstał itp itd ... bo to już troszkę zaawansowana zabawa wskaźnikami i wcale się nie dziwię, że nie każdy wie co taki zapis może oznaczać. Tyle że ja bym wtedy ni pisał takich dziwnych rzeczy na forum - że coś jest mało czytelne - nie wyjaśniając nawet - co jest nieczytelne - a na dodatek jako argument używać stackoverflow ... bo znowu ten przykład ma się jak pięść do nosa.

A przy dobrej analizie z YB można się jeszcze czegoś nauczyć

_________________
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: 27 wrz 2019, o 18:37 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

"a co ma Qurczę wspólnego pierwszy zapis wymyślony który podałeś z drugim ?"
Mirek. Pierwszy i drugi zapis to Twoje wpisy
Pytanie było takie dlaczego "TIMIONA", musi ona być różna od jawnej nazwy struktury, w tym przypadku "IMIONA".

Staram się pewne rzeczy ogarnąć. Tyle i tylko tyle.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2019, o 12:32 
Offline
Moderator
Avatar użytkownika

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

JarekB napisał(a):
Mirek. Pierwszy i drugi zapis to Twoje wpisy
Pytanie było takie dlaczego "TIMIONA", musi ona być różna od jawnej nazwy struktury, w tym przypadku "IMIONA".


Jak zwykle przepraszam ... ale źle zrozumiałem pytanie teraz już wiem w czym rzecz tzn o co tobie chodziło.

Tak nazwa jawna i niejawna mogą być takie same, to błąd na blogu ...

------------------------ [ Dodano po: 4 minutach ]

na blogu poprawiłem dodając "nie" musi być różna ;)

_________________
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: 28 wrz 2019, o 16:33 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Dzięki. Twojego blog traktuje jako dodatkowe źródło wiedzy o C. Napotkałem małą nieścisłość i jedyne co mogłem zrobić to zapytać. :)

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 9 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