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



Teraz jest 20 cze 2026, o 23:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 4 sty 2017, o 12:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

cześć
Zabrałem się właśnie za analizowanie kodu w plikach "soft_timers" i nasuwa mi się pytanie odnośnie umieszczenia w pliku
"soft_timers.h" definicji funkcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


z dotychczasowych nauk wiem, że w plikach typu .h umieszczamy deklarację funkcji a definicja siedzi w pliku .c
Czy wynika to z tego, że jest to funkcja "in line"?
I jeszcze jedno - w kodzie na nośniku linia
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jest zakomentowana. Z tego co czytałem wcześniej samo "in line" kompilator może ale nie musi potraktować dosłownie.
Sorki za wścibskość ale ja muszę wiedzieć dokładnie.... ;)

pozdrawiam

_________________
Pomóżcie mi stanąć na nogi



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

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

mczarny napisał(a):
z dotychczasowych nauk wiem, że w plikach typu .h umieszczamy deklarację funkcji a definicja siedzi w pliku .c

Więc przyszedł czas na kolejny etap nauki - otóż TAK, makra preprocesora, które przecież jak wiesz również mogą być zamieniane na żywy kod ;) przecież też umieszcza się gdzie ? w plikach nagłówkowych *.h .... czyli ? ... czyli zasadne i dopuszczalne jest umieszczanie definicji funkcji typu inline w plikach nagłówkowych

mczarny napisał(a):
Z tego co czytałem wcześniej samo "in line" kompilator może ale nie musi potraktować dosłownie.

Dobrze wyczytałeś ... z tą różnicą, że gdy użyjemy atrybutu __attribute__((always_inline)); to już kompilator nie ma wyboru a obowiązek.

mczarny napisał(a):
Sorki za wścibskość ale ja muszę wiedzieć dokładnie....

A co to za wścibskość ? ;) mnie takie pytania wręcz cieszą, bo to oznacza, że dokopujesz się do samego środka ! ... to jest zawsze moje marzenie i cel gdy piszę książkę, żeby ktoś zadawał pytania gdy czegoś nie rozumie na forum, zamiast siedzieć cicho kopać się z problemem a gdy się go nie rozwiąże to się poddawać ...

Odpowiadając więc, linię tę pozostawiłem zakomentowaną, żeby czytelnik widział jaka była pierwotna próba stworzenia tejże funkcji a na jakiej się skończyło ;)

------------------------ [ Dodano po: 6 minutach ]

A jeśli już mamy atrybut __always_inline to nie może to być funkcja udostępniana do innych modułów programu poprzez wystawienie jej deklaracji w pliku *.h z uwagi na to, że skoro MUSI być na siłę INLINE (a chyba wiesz co to znaczy) ... to znaczy że nie mogą się inne moduły do niej odwoływać poprzez SKOK do niej ... może ona działać jako inline w tym przypadku TYLKO w ramach modułu w którym zostanie stworzona

chyba, że .... no chyba, że jej definicję przeniesiemy do pliku nagłówkowego co jest w takim specyficznym wypadku dopuszczalne ;)

_________________
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 sty 2017, o 12:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Dzięki za odpowiedź.
Domyślałem się z tym "in line" - teraz wiem na pewno jak używać takich funkcji

_________________
Pomóżcie mi stanąć na nogi



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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