<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=58&amp;t=20021&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-01-22T15:20:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=20021&amp;mode</id>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-22T15:20:10+01:00</updated>
<published>2018-01-22T15:20:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202422#p202422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202422#p202422"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202422#p202422"><![CDATA[
Dzięki jeszcze raz za wytłumaczenie.<br />Myślę, że już wszystko jasne. Obejrzałem dodatkowo na spokojnie jeszcze raz poradnik Mirka i myślę, że mogę spokojnie zamknąć temat. Dzięki wszystkim za cierpliwość. Pozdrowionka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 22 sty 2018, o 15:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-22T02:03:56+01:00</updated>
<published>2018-01-22T02:03:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202399#p202399</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202399#p202399"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202399#p202399"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />I teraz chodziło mi o to, czy buttons.h, ekran.h, diody.h, itd..., czyli wszystkie z tego projektu muszę dołączyć do main.c, czy jeżeli w main.c nie ma ani jednej linijki kodu dotyczącego np. przycisków, czyli buttons, co nie dołączam buttons.h do main.c. Wystarczy, że jest w buttons.c<br /></div>Jak nie ma w main.c ani jednej linijki kodu powiązanej z funkcjami i zmiennymi z button.c, to nie podłączasz button.h (bo po co?). Ale jak nie korzystasz z niczego to albo znaczy że program nie korzysta z żadnych elementów z tego pliku (no chyba że tam są tylko niezależne od reszty programu funkcje działające na przerwaniach) albo jest to plik który jest &quot;głębiej w drzewie&quot; plików.<br />Więc jeżeli z buttons.c korzysta tylko inna biblioteka a nie main.c to dołączasz buttons.h to tej biblioteki a nie do main.c.<br />Taki przykładowy projekt z wyświetlaczem OLED po I2C - w main.c podłączasz OLED.h, bo będziesz coś wyświetlał na wyświetlaczu. Ale main.c nie obchodzi jak ten wyświetlacz jest podpięty i czy potrzebuje coś więcej. Za to OLED.c musi to mieć zdefiniowane i tam podłączasz i2c.h.<br /><br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />to jeżeli podzielę projekt na kilka plików, części, to tak naprawdę<br />nie musiałbym wcale inkludować jakichkolwiek plików w main.c, ponieważ są one zainkludowane w pozostałych plikach.c i tak czy inaczej powinny być widoczne przez kompilator, jako całość, a jednak<br /></div>Popatrz się w console jak wygląda kompilacja projektu wieloplikowego. Idzie po kolei kompilacja kolejnych plików c. Dlatego jak w danym pliku używasz jakiś wartości z #define, funkcji lub zmiennych z innych plików to musisz poinformować kompilator, że one istnieją i jakiego są typu (zmienne) oraz jakie mają wejścia i wyjścia (funkcje). Dzięki temu kompilator odpowiednio skompiluje kod. Na koniec po kompilacji wszystkich plików do roboty zabiera się linker, który linkuje wszystkie wyniki z kompilacji poszczególnych plików c w jeden wynik. I on już sprawdza czy obiecane kompilatorowi funkcje oraz zmienne znajdują się fizycznie w którymś z plików.<br />To tak w skrócie. Ale polecam zapoznać się z <!-- m --><a class="postlink" href="https://mirekk36.blogspot.com/2016/08/kompilator-pod-lupa-i-podzia-projektu.html" >https://mirekk36.blogspot.com/2016/08/k ... jektu.html</a><!-- m --><br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 22 sty 2018, o 02:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-21T14:46:04+01:00</updated>
<published>2018-01-21T14:46:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202371#p202371</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202371#p202371"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202371#p202371"><![CDATA[
Dzięki Robercie za wyjaśnienie.<br />jeśli chodzi o naukę, to ja uczę się hobbystycznie, dla własnych potrzeb i raczej nie wiążę z tym jakiś większych planów. Mam już trochę latek i raczej <br />późno na zmiany  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .Od wielu lat zajmuję się elektroniką i to również czysto hobbystycznie i w pewnym momencie stwierdziłem, że muszę sięgnąć i po tą<br />dziedzinę, ponieważ przy pewnych własnych konstrukcjach i wykorzystaniu mikrokontrolera trzeba by go umieć samemu oprogramować.<br />Oczywiście jest wiele konstrukcji w necie i wsady do nich, ale nic nie można przerobić, zmienić, czy dodać jakieś własne modyfikacje. I tu postanowiłem nauczyć się (nauczyć, może za wiele <br /><br />powiedziane) trochę na tyle, na ile jest mi to potrzebne i na ile będę w stanie przyswoić to C.<br />Ponoć do prostych urządzeń wystarczyłby bascom, ale zdecydowałem się na C dzięki książkom Mirka i ponadprzeciętne wsparcie z Jego strony. Tworzy super<br />poradniki i jest bardzo dużo materiałów na blogu, tym forum itd...Oczywiście pomimo tylu materiałów i nawet wielokrotnego studiowania zawsze pozostają jakieś<br />pytania, chociażby z powodu słownictwa, terminologii itd..., z którą wcześniej nie miałem do czynienia, ale jak już coś zaskoczę, to na amen <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br /><br />Co do &quot;wszystkich&quot; plików nagłówkowych, to nie chodziło mi o wszystkie pliki w c, które będę sobie dowolnie inkludował na górze projektu, tylko np:<br /><br />Mam plik buttons.c, ekran.c, diody.c, itd... i do nich utworzone pliki nagłówkowe: buttons.h, ekran.h, diody.h itd...<br /><br />I teraz chodziło mi o to, czy buttons.h, ekran.h, diody.h, itd..., czyli wszystkie z tego projektu muszę dołączyć do main.c, czy jeżeli w main.c nie ma ani jednej<br />linijki kodu dotyczącego np. przycisków, czyli buttons, co nie dołączam buttons.h do main.c. Wystarczy, że jest w buttons.c<br /><br />Oczywiście dołączyłem wszystkie pliki .h do main.c i potem po kolei je wyłączałem poprzez // i kompilowałem do momentu do kiedy kompilator nie zgłaszał błędów.<br />Tylko, że to załatwia problem tylko połowicznie, bo przecież nadal pozostaje pewna niewiedza. Ktoś może mi tu zarzucić, że ciągnę ten temat w nieskończoność<br />i można by tak pisać i pisać, ale ja jestem uparty w dążeniu do celu i lepiej się przyznać, że się czegoś do końca nie rozumie niż iść dalej, bo to się i tak czkawką odbije prędzej czy <br /><br />później...Pozostaje jeszcze inkludowanie pliku nagłówkowego .h do innych plików źródłowych .c, bo może być taka sytuacja, że np.<br />kod zawierający obsługę przycisku będzie użyty także w ekran.c i diody.c, a wiec tam również muszę zainkludować buttons.h Jest to dla mnie zrozumiałe i <br />oczywiste, ale do końca nie pojmuję, jak to się ma z main.c. Czy tam załączam tylko te pliki z rozszerzeniem .h, gdzie jest akurat jakiś kod powiązany z tymi plikami.h. czy po prostu w main.c <br /><br />bezwzględnie dołączam wszystkie pliki.h z mojego projektu, dlatego, że jest to main.c nazwijmy go powiedzmy guru całego projektu i dla tego tak.<br />Może trochę pokrętnie to wszystko opisałem, namieszałem, ale myślę, że koledzy zrozumieli, o co mi chodzi. Tak na koniec, to sobie myślałem jeszcze do <br />niedawna (oczywiście źle myślałem, rzecz jasna), że jakby się tak logicznie zastanowić, to jeżeli podzielę projekt na kilka plików, części, to tak naprawdę<br />nie musiałbym wcale inkludować jakichkolwiek plików w main.c, ponieważ są one zainkludowane w pozostałych plikach.c i tak czy inaczej powinny być widoczne przez kompilator, jako całość, a jednak <br /><br />chyba się myliłem. <br />Wiem, że dużo na ten temat się tu rozpisywałem i chcę już Was nie męczyć, bo jest przecież całe mnóstwo innych niewiadomych, ale pewnie nie jestem jedyny,<br />kto do końca tego nie zrozumiał i przyda się również innym osobom, jeśli trafia na ten temat. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 21 sty 2018, o 14:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-21T00:36:15+01:00</updated>
<published>2018-01-21T00:36:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202344#p202344</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202344#p202344"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202344#p202344"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />Po drugie, kto może je modyfikować i po co.<br /></div>Osoba która otrzyma od Ciebie bibliotekę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Jak się uczysz, to jest dla Ciebie odległa rzecz, ale ma znaczenie jak się zaczyna robić poważniejsze rzeczy. Chodzi o to, że jak wystawiasz zmienną na świat, czyli każdy ma do niej dostęp, to może ją dowolnie i w każdym momencie modyfikować. W takiej sytuacji autor biblioteki nie ma na to wpływu, a jeżeli zmiana wartości musi być zwalidowana albo przy okazji zrobić jeszcze jakieś inne zmiany, to pojawia się problem. Dlatego robi się funkcję której wywołanie pozwala zmienić wartość zmiennej a przy okazji wykonać ewentualne inne rzeczy.<br /><br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />Zauważyłem, że jak dodałem wszystkie pliki .h do main.c<br /></div>Co znaczy wszystkie? Dołączasz te które wykorzystujesz.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 21 sty 2018, o 00:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-20T19:02:57+01:00</updated>
<published>2018-01-20T19:02:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202314#p202314</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202314#p202314"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202314#p202314"><![CDATA[
Dzięki robespierre.<br />Sorry, że dopiero odpisuję, ale właśnie przeglądałem Posty. Nie zrozumiałem trochę Twojej rady, a mianowicie (nie wiem, jak wstawić cytat):<br /><br />&quot;Z externami uważaj. Bardzo często świadczyć mogą o złym projekcie lub rozplanowaniu hermetyzacji modułów programu. Jak pokazujesz &quot;gołe dane extern&quot; to ktoś te dane będzie modyfikował. Ogólnie lepiej ich nie pokazywać a jedynie udostepnić funkcję do manipulacji&quot;<br /><br />Po pierwsze, jak rozumieć &quot;gołe dane extern&quot;. Po drugie, kto może je modyfikować i po co. Ja moje kody mam na moim komputerze i ich nie publikuję, ponieważ<br />jestem początkujący i są zbyt proste, a żeby były godne większego zainteresowania. Zabrzmiało to trochę tajemniczo. Oczywiście nie  wystraszyłeś mnie, ale<br />ciekaw jestem, co miałeś na myśli.<br />Przy okazji, a żeby stała się większa jasność w temacie &quot;inkludowania&quot; plików, to chciałem jeszcze dopytać. Obejrzałem poradniki, które koledzy sugerowali, ale <br />zapytam.<br /><br />-----------------------------------------------------------<br /><br />Czy powinienem koniecznie dołączyć WSZYSTKIE pliki .h do main.c , które są w projekcie? Są one dołączane do konkretnych plików systemowych typu .c i potem, jeśli dobrze rozumiem te pliki .c są jakby kontynuacją pliku main.c, a więc te pliki .h tak, czy inaczej powinny być widoczne w projekcie. Kiedyś ktoś mi<br />napisał, że trochę ryzykowne jest inkludowanie poprzez jakieś łańcuszki plików (z pliku na plik, poprzez inny plik......). I czym grozi zbyt częste inkludowanie<br />czyli ten sam plik .h i w majnie i gdzie indziej. Zauważyłem, że jak dodałem wszystkie pliki .h do main.c , to wszystko było ok. Potem zacząłem wyłączać niektóre<br />pliki .h w main.c i do pewnego momentu program się kompilował. Do pewnego momentu oczywiście.<br />Sorry, że jestem taki marudny i dociekliwy, ale tak już mam i jak czegoś do końca nie zrozumiem, to będę męczył. Nie chcę programować na czuja.<br />Pozdrawiam.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 20 sty 2018, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-18T14:11:44+01:00</updated>
<published>2018-01-18T14:11:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202235#p202235</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202235#p202235"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202235#p202235"><![CDATA[
Dzięki micky<br />Tak też i uczynię, nie mniej jednak staram się nie za często pytać, żeby nie zawracać głowy byle czym. Wiadomo, trzeba najpierw samemu pokombinować. Powodzonka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 18 sty 2018, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-18T13:51:40+01:00</updated>
<published>2018-01-18T13:51:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202234#p202234</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202234#p202234"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202234#p202234"><![CDATA[
I o to chodzi. Powodzenia a jak będziesz miał jakieś pytania to zadawaj je na forum - po to jesteśmy, żeby sobie nawzajem pomagać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 18 sty 2018, o 13:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-18T13:25:33+01:00</updated>
<published>2018-01-18T13:25:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202233#p202233</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202233#p202233"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202233#p202233"><![CDATA[
Dzięki bardzo.<br />Rozumiem. Przy okazji sorry za ten masakryczny kod extern void cos_tam(void); Oczywiście chodzi mi o zmienne i bezmyślnie napisałem taki przykład mając w głowie tylko extern, a podpiąłem to<br />pod funkcję zamiast na przykładzie zmiennej. Napisałem programik, który posiada razem 16 plików dodatkowych (c i h), więc myślę, że chyba pojąłem ideę podziału w miarę przyzwoity sposób.<br />Opanowałem w końcu, co to definicja funkcji, ciało i deklaracja i jak to rozdzielić, dopisać średnik na końcu i wstawić do .h. Zmieniłem trochę sposób nauki, ponieważ do tej pory coś tam zatrybiłem,<br />ale nie do końca i szedłem dalej. Wychodziły mi jakieś tam programiki i działały, ale tak na prawdę bez pełnego zrozumienia. W końcu zrozumiałem, że tak się nie da. Im szybciej chciałem, tym wolniej<br />to idzie. Teraz czytam rozdział kilka razy, poradnik kilka razy i koledzy na forum. Inaczej całe życie będę migał diodami  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> . Dzięki i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 18 sty 2018, o 13:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-18T12:49:58+01:00</updated>
<published>2018-01-18T12:49:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202232#p202232</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202232#p202232"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202232#p202232"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />A jeśli np. dany plik nagłówkowy.h jest &quot;zainkludowany&quot; do kilku plików źródłowych.c , to wtedy musi być tak ?<br />[syntax=c]extern void coś_tam(void);[/syntax]<br />Czytałem, ale dopytuję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /></div>To niestety musisz jeszcze raz przeczytać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong>extern</strong> używa się dla zmiennych a nie dla funkcji.<br />Czy zapis jest deklaracją czy definicją, to dla funkcji jest łatwe do rozróżnienia przez kompilator, bo albo masz ciało funkcji albo średnik <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dla zmiennych to już tak się nie da (zmienna nie ma ciała <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />) i aby poinformować kompilator że taka zmienna gdzieś indziej istnieje (ale nie w tym pliku) i jest danego typu daje się extern (bez extern stworzyłbyś w drugim miejscu nową zmienną o takiej samej nazwie).<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 18 sty 2018, o 12:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-18T11:59:29+01:00</updated>
<published>2018-01-18T11:59:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202231#p202231</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202231#p202231"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202231#p202231"><![CDATA[
Dzięki jeszcze raz.<br />Właśnie obejrzałem poradnik. Bardzo dobra pomoc i sporo mi się wyjaśniło, jak również Wasze podpowiedzi i kol. rskup o priorytecie pliku systemowego nad moim własnym. Nie jestem na bieżąco z poradnikami Mirka. Czytałem również w <span style="color: #0040FF">BB</span> o plikach extern, ale jeszcze dopytam. Jeżeli mam kilka plików nagłówkowych.h, ale tylko jeden plik źródłowy.c korzysta z jakiejś<br />deklaracji w danym pliku.h , to powinno wyglądać tak ?<br /><br />[syntax=c]void coś_tam(void);[/syntax]<br /><br />A jeśli np. dany plik nagłówkowy.h jest &quot;zainkludowany&quot; do kilku plików źródłowych.c , to wtedy musi być tak ?<br /><br />[syntax=c]extern void coś_tam(void);[/syntax]<br /><br />Czytałem, ale dopytuję  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 18 sty 2018, o 11:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-18T10:48:31+01:00</updated>
<published>2018-01-18T10:48:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202228#p202228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202228#p202228"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202228#p202228"><![CDATA[
Robert, daj koledze samemu do tego dojść, bo się nie nauczy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 18 sty 2018, o 10:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-18T10:44:35+01:00</updated>
<published>2018-01-18T10:44:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202227#p202227</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202227#p202227"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202227#p202227"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />po zmianie kolejności wyskoczyły alerty, ale może to był &quot;czysty przypadek&quot;. Chociaż w komputerze raczej nie powinno być przypadków, a wszystko sprowadza się do tego, co my robimy <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br /></div>To jest logiczne jak budowa cepa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Pliki z dyrektywy #include są fizycznie wstawiane w miejsce umieszczenia dyrektywy #include. Jak w pliku wstawionym masz odwołanie do jakiejś zdefiniowanej wartości (#define), która wcześniej nie została zaincludowana to kompilator wyrzuci Ci to warningiem/errorem.<br />Systemowe biblioteki są tak pisane, że jak używane / potrzebne jest coś, to jest to doincudowywane, więc w typowych zastosowania nie ma znaczenia kolejność. Ale jak wrzucisz swój #include przed systemowymi i używasz np. nazw rejestrów to będziesz miał taką sytuację jak opisujesz, bo jeszcze kompilator nie zna ich, bo nie zostały jeszcze doinkludowane odpowiednie &quot;tłumaczenia&quot;.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 18 sty 2018, o 10:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-18T10:31:32+01:00</updated>
<published>2018-01-18T10:31:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202226#p202226</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202226#p202226"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202226#p202226"><![CDATA[
Nie ma przypadków. Bierz się jak najszybciej za te poradniki co poleciłem a wszystko powinno sie wyjaśnić.<br /><br />P. S. Mirek stworzył program Atnel Video Player, który w darmowej wersji pozwala przeglądać, wyszukiwać i tworzyć bookmarki do wszystkich jego filmików. A w wersji płatnej do dowolnych kanałów na YT <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> koszt niewielki a pozwala po pierwsze ogarnąć swoje ulubione kanały a po drugie jest to najprostszy sposob wsparcia Mirka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 18 sty 2018, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-18T10:23:06+01:00</updated>
<published>2018-01-18T10:23:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202225#p202225</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202225#p202225"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202225#p202225"><![CDATA[
Dziękuję za pomoc. Tych akurat poradników nie oglądałem, tak że dziękuję za sugestię. Na pewno skorzystam. Jeśli nie ma znaczenia kolejność plików, to zastanawia mnie tylko fakt, czemu<br />po zmianie kolejności wyskoczyły alerty, ale może to był &quot;czysty przypadek&quot;. Chociaż w komputerze raczej nie powinno być przypadków, a wszystko sprowadza się do tego, co my robimy  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br />Zabieram się za wyszukiwanie poradników. Pozdrowionka.<br /><br />PS.<br /><br />A tak na marginesie, to czy jest możliwość poprawienia tytułu w moim temacie ?. Miało być Piki, a tu taka kicha wyszła. Nie zauważyłem  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 18 sty 2018, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-18T09:25:03+01:00</updated>
<published>2018-01-18T09:25:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202222#p202222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202222#p202222"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202222#p202222"><![CDATA[
Oglądałeś poradniki Mirka o podziale plików i jak działa kompilator?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 18 sty 2018, o 09:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2018-01-18T08:41:08+01:00</updated>
<published>2018-01-18T08:41:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202220#p202220</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202220#p202220"/>
<title type="html"><![CDATA[Re: Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202220#p202220"><![CDATA[
avr/io.h jest jednym z obowiązkowych inkludów - on przekierowuje już na konkretny plik np iom32.h itp.<br /><br />Kolejność jest dowolna, ogolnie przyjęta zasada, że najpierw dajemy inkludy systemowe czyli te &lt;&gt;, potem &quot;  &quot; czyli inkludy własnych bibliotek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 18 sty 2018, o 08:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-01-18T08:31:18+01:00</updated>
<published>2018-01-18T08:31:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202219#p202219</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202219#p202219"/>
<title type="html"><![CDATA[Plioki źródłowe i nagłówkowe, a dyrektywa INCLUDE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20021&amp;p=202219#p202219"><![CDATA[
Witam szanownych kolegów.<br />Mam prośbę o wyjaśnienie w kwestii sposobu dołączania plików nagłówkowych. Nauczyłem się już (przynajmniej tak sądzę) dzielić projekt na kilka części. Projekty kompilują się i działają<br />tak, jak był tylko jeden długi plik, ale jednej rzeczy do końca nie rozumiem. Często spotykam się na forum ze stwierdzeniem &quot;dołączyłem pliki nagłówkowe we właściwej kolejności itd...&quot;.<br />No właśnie, jaka jest ta właściwa kolejność. Załóżmy, że mamy coś takiego:<br /><br />[syntax=c]copy_pgm_to_ram_coś_tam();<br />lcd_locate(x,y);<br />lcd_str_P(PSTR(&quot;przykład&quot;));<br />_delay_ms(2000);<br />----coś związane z eeprom-----;<br />---------;[/syntax]<br /><br /><br />I teraz &quot;includy&quot;<br /><br />Ja bym np. załączył w takiej kolejności:<br /><br />[syntax=c]#include &lt;avr/pgmspace.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;;<br />#include &lt;util/delay.h&gt;;<br />#include &lt;avr/eeprom&gt;.h[/syntax]<br /><br />Sugeruję się kolejnością funkcji napisanych wyżej, ale czy to tak ma być i czy faktycznie ma to znaczenie ?.<br /><br />Nadmienię, że jak kolejność była przypadkowa (nie pamiętam już, jaka), to pokazały się błędy i musiałem dodać:<br /><br />[syntax=c]&lt;avr/io.h&gt;[/syntax]<br /><br />Wówczas błędy znikały. I jeszcze czy nazwy plików w &quot;    &quot; musza być na samym dole pod plikami w &lt;     &gt;, czy nie.<br /><br />Proszę o konkretne odpowiedzi w celu rozwiania wszelkich wątpliwości. Z góry dziękuję za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 18 sty 2018, o 08:31</p><hr />
]]></content>
</entry>
</feed>