<?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=4&amp;t=4640&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T13:53:40+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4640&amp;mode</id>
<entry>
<author><name><![CDATA[egemini]]></name></author>
<updated>2013-11-01T10:00:16+01:00</updated>
<published>2013-11-01T10:00:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55020#p55020</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55020#p55020"/>
<title type="html"><![CDATA[Re: Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55020#p55020"><![CDATA[
<div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />Jak robimy include, to tak jak byśmy wklejali bezpośrednio do tekstu zawartość includowanego tekstu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> więc wszystko co znajduje się w *.h (zainkludowanym) - znajduje się również w pliku głównym (oczywiście po zainkludowaniu tego wspominanego *.h ) <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />to jest dla mnie jasne od kilku lat, wszystko przez to, że wykonuję projekt pod presją czasu, pracuję nad pracą inżynierską i za bardzo się przejmuje ze mam mało czasu i tak wychodzą takie babole przy tak prostych rzeczach ;p<br /><br /><strong><span style="color: #00BF00">mirekk36</span></strong>, externa miałem tylko w main.c , ale rzeczywiście zrobiłem to bez sensu, przerzuciłem do pliku nagłówkowego i jest ok <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=1848">egemini</a> — 1 lis 2013, o 10:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-11-01T02:08:55+01:00</updated>
<published>2013-11-01T02:08:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55008#p55008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55008#p55008"/>
<title type="html"><![CDATA[Re: Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55008#p55008"><![CDATA[
Jak robimy include, to tak jak byśmy wklejali bezpośrednio do tekstu zawartość includowanego tekstu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> więc wszystko co znajduje się w *.h (zainkludowanym) - znajduje się również w pliku głównym (oczywiście po zainkludowaniu tego wspominanego *.h ) <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 1 lis 2013, o 02:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-01T00:58:35+01:00</updated>
<published>2013-11-01T00:58:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55007#p55007</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55007#p55007"/>
<title type="html"><![CDATA[Re: Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55007#p55007"><![CDATA[
<div class="quotetitle">egemini napisał(a):</div><div class="quotecontent"><br />I rozumiem, że jeśli chcę żeby zmienna była również widoczna w main.c muszę ją w mainie zaDEKLAROWAĆ z extern tak? wtaki sposób mi działa<br /></div><br /><br />poczekaj - źle rozumiesz ...<br /><br />ABSOLUTNIE w man.c nie robisz znowu extern <br /><br />jedyne co robisz to w pliku main.c inkludujesz przecież swój<br /><br />lib.h<br /><br />który już ma tego externa - więc po co jeszcze raz przepisywać to ręcznie w main.c ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />rozumiesz teraz po co są pliki nagłówkowe *.h ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 lis 2013, o 00:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[egemini]]></name></author>
<updated>2013-11-01T00:26:20+01:00</updated>
<published>2013-11-01T00:26:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55005#p55005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55005#p55005"/>
<title type="html"><![CDATA[Re: Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=55005#p55005"><![CDATA[
I rozumiem, że jeśli chcę żeby zmienna była również widoczna w main.c muszę ją w mainie zaDEKLAROWAĆ z extern tak? wtaki sposób mi działa, dziękuję bardzo za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />egemini napisał(a):<br />problem w tym że to nie działa<br /><br />Czy sądzisz że opisywałbym TAK PODSTAWOWY mechanizm w C ... który miałby nie działać ? ...<br /></div><br />w żadnym wypadku nie chciałem, żeby to tak zabrzmiało, miałem na myśli to, że mi coś nie działa i przyczyną tego jest że coś źle rozumiem, ale jak przeczytałem to drugi raz to rzeczywiście tak brzmi za co serdecznie przepraszam. <br /><br />dziękuję jeszcze raz za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1848">egemini</a> — 1 lis 2013, o 00:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-31T22:37:25+01:00</updated>
<published>2013-10-31T22:37:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54993#p54993</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54993#p54993"/>
<title type="html"><![CDATA[Re: Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54993#p54993"><![CDATA[
<div class="quotetitle">egemini napisał(a):</div><div class="quotecontent"><br />problem w tym że to nie działa<br /></div><br />Czy sądzisz że opisywałbym TAK PODSTAWOWY mechanizm w C ... który miałby nie działać ? ... <br /><br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />To co jest w lib.h to *deklaracja* zmiennych, nigdzie nie ma *definicji*. Nic więc dziwnego że kompilator krzyczy. Żeby to zadziałało trzeba zmienne zadeklarować w lib.c (i nie inkludować lib.h w lib.c bo prawdopodobnie kompilator ogłosi błąd, zresztą nawet nie ma po co)<br /></div><br /><br />prawie dobrze tzn początek BARDZO DOBRY:<br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />To co jest w lib.h to *deklaracja* zmiennych, nigdzie nie ma *definicji*. Nic więc dziwnego że kompilator krzyczy.<br /></div><br /><br />ale dalej to już:<br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Żeby to zadziałało trzeba zmienne <strong><span style="color: #FF0000">zadeklarować</span></strong> w lib.c<br /></div><br /><br />Na pewno nie deklarować a ZDEFINIOWAĆ - ale myślę że kolega się po prostu przejęzyczył tutaj. Bo oczywiście że w lib.c MUSI być najpierw ich DEFINICJA żeby w lib.h mogła działać DEKLARACJA z extern<br /><br />pokazuję to w bluebooku wyraźnie ale pewnie koledze egemini coś tam umknęło i myślę że teraz się wyjaśni.<br /><br />krócej mówiąc<br /><br />lib.c<br />[syntax=c]int zmienna;  // tu DEFINICJA[/syntax]<br /><br /><br />a w lib.h<br />[syntax=c]extern int zmienna; // tu DEKLARACJA[/syntax]<br /><br />dlatego tak WAŁKUJĘ w książce żeby czytelnik zrozumiał czym różni się definicja od deklaracji<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 paź 2013, o 22:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:53:40+01:00</updated>
<published>2013-10-31T20:09:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54972#p54972</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54972#p54972"/>
<title type="html"><![CDATA[Re: Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54972#p54972"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 31 paź 2013, o 20:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[egemini]]></name></author>
<updated>2013-10-31T19:44:11+01:00</updated>
<published>2013-10-31T19:44:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54965#p54965</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54965#p54965"/>
<title type="html"><![CDATA[Zasięg zmiennych w różnych plikach]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4640&amp;p=54965#p54965"><![CDATA[
Witajcie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />tworzę program i własną bibliotekę. mam pliki main.c lib.h i lib.c chcę zrobić by zmienna zadeklarowana w lib.h była widoczna w main.c i wyczytałem z niebieskiej książki Pana Mirka (świetna książka, każdą stronę czytam z podziwem (; ) że należy poprzedzić deklarację słówkiem extern. problem w tym że to nie działa ;/ zmienne te nie są widoczne nawet w lib.c i żeby działało muszę deklarować w lib.c ale wtedy to już wogóle nie będą widoczne w main.c poniżej kawałki kodu plików:<br /><br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;lib/lib.h&quot;<br /><br />int main(){<br /><br /><br />sei();<br /><br />while(1){<br />if(sek_flag){<br />if(0==(sek%3)) funkcja(1);<br />if(1==(sek%3)) funkcja(2);<br />if(2==(sek%3)) funkcja(3);<br />sek_flag=0;<br />}<br />if(ms10_flag){<br />funkcja(5);<br /><br />ms10_flag=0;<br />}<br />}<br />}[/syntax]<br /><br />lib.h<br /><br />[syntax=c]#ifndef LIB_H_<br />#define LIB_H_<br /><br /><br />// chodzi o te zmienne:<br />extern volatile uint8_t cy1;<br />extern volatile uint8_t cy2;<br />extern volatile uint8_t cy3;<br />extern volatile uint8_t cy4;<br />extern uint8_t sek;<br />extern uint8_t sek_flag;<br />extern volatile uint8_t ms10_flag;<br />extern volatile uint8_t ms10;/**/<br /><br />void funkcja(int);<br /><br />#endif[/syntax]<br /><br />lib.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;lib.h&quot;<br /><br /><br />uint8_t data_led&#91;10&#93; PROGMEM = {<br />0x03,// 0<br />0x9F,// 1<br />0x25,// 2<br />0x0D,// 3<br />0x99,// 4<br />0x49,// 5<br />0x41,// 6<br />0x1B,// 7<br />0x01,// 8<br />0x09,// 9<br />};<br /><br />void led_display_init(void){<br />LED_DATA_DIR |= 0xff; <br />LED_DATA |= 0xff;<br />ANODY_DIR|=CA1 | CA2 | CA3 | CA4 ;<br />ANODY_PORT|=CA1 | CA2 | CA3 | CA4 ;<br /><br />TCCR0 |= (1&lt;&lt;WGM01); //tryb TCT<br />TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // preskaler 1024<br />OCR0 = 45;<br />TIMSK |= (1&lt;&lt;OCIE0);<br /><br /><br />}<br /><br />ISR(TIMER0_COMP_vect){<br /><br /><br />static uint8_t an&#91;4&#93; = {~CA1,~CA2,~CA3,~CA4};<br />static uint8_t licznik=1;<br /><br />ANODY_PORT = MASKA_ANODY;<br /><br />if(licznik==0) LED_DATA =pgm_read_byte( &amp;data_led&#91;cy1&#93; );<br />else if(licznik==1) LED_DATA = pgm_read_byte( &amp;data_led&#91;cy2&#93; );<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;data_led&#91;cy3&#93; );<br />else if(licznik==3) LED_DATA = pgm_read_byte( &amp;data_led&#91;cy4&#93; );<br /><br />ANODY_PORT &amp;= ~an&#91;licznik&#93;;<br /><br />if(++licznik&gt;3) licznik=0;<br /><br />ms10_flag=1;<br />static uint8_t i=0;<br />if(++i&gt;9){<br />if(++ms10&gt;99){<br />sek_flag=1;<br />sek++;<br />if(sek&gt;59)<br />  sek=0;<br />ms10=0;<br />}<br />i=0;<br />}<br />}[/syntax]<br /><br /><br />nie jest to dokładny kod programu bo nie chcę żeby tu było za gęsto i za dużo kodu ale reszta jest nieistotna, problemem moim jesty to, że w tym momencie nie widać w mainie ani w lib.c zmiennych w lib.h ;/<br /><br />chciałbym prosić was o pomoc, ponieważ nie wiem czy jest to błąd w kodzie, czy to wina plugina może  ( programuję w eclipse) a nie chcę błądzić po omacku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> pozdrawiam <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=1848">egemini</a> — 31 paź 2013, o 19:44</p><hr />
]]></content>
</entry>
</feed>