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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-01-17T15:59:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2128&amp;mode</id>
<entry>
<author><name><![CDATA[mg101]]></name></author>
<updated>2013-01-17T15:59:13+01:00</updated>
<published>2013-01-17T15:59:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=25000#p25000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=25000#p25000"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=25000#p25000"><![CDATA[
<div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Jest tak aby nikt nie mógł się do niej odwołać chociażby przez przypadek. Zauważ, że każdy może sobie w innym pliku użyć zmiennej o nazwie <strong>bufor</strong>. Może użyć deklaracji extern uint8_t bufor, wtedy kompilator będzie szukał takiej zmiennej w innych plikach i znajdzie także tą, która wcale nie musi być dostępna dla innych plików.<br /></div><br />Dzięki. Teraz to do mnie trafiło!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=683">mg101</a> — 17 sty 2013, o 15:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-17T14:49:34+01:00</updated>
<published>2013-01-17T14:49:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24991#p24991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24991#p24991"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24991#p24991"><![CDATA[
Jest tak aby nikt nie mógł się do niej odwołać chociażby przez przypadek. Zauważ, że każdy może sobie w innym pliku użyć zmiennej o nazwie <strong>bufor</strong>. Może użyć deklaracji extern uint8_t bufor, wtedy kompilator będzie szukał takiej zmiennej w innych plikach i znajdzie także tą, która wcale nie musi być dostępna dla innych plików. Nie jest to zbyt oryginalna nazwa w przeciwieństwie do np. bufor_klawiatury, bufor_usart, bufor_spi. Używając static tworzysz przyjazny i profesjonalny kod.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 17 sty 2013, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-17T14:42:09+01:00</updated>
<published>2013-01-17T14:42:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24988#p24988</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24988#p24988"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24988#p24988"><![CDATA[
<div class="quotetitle">mg101 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent">bo pewnie kolega przeoczył, że pojęcie GLOBALNA zmienna obowiązuje w języku C nie do CAŁEGO PROJEKTU - czyli WSZYSTKICH plików a TYLKO do tego jednego pliku *.C w którym jest jej definicja<br /></div> No właśnie. Skoro dana zmienna i tak jest widoczna tylko w tym jednym pliku bez &quot;static&quot; , to po co dawać &quot;static&quot; żeby była widoczna tylko w tym pliku. I nie jest tak że znalazłem błąd twórcy język C pana Stroustrupa , tylko czegoś nie kumam.</div><br /><br />Mirek na stronie 124 dosyć jasno piszę po co się stosuje static, nie wiem, czemu cały czas mylisz zastosowanie static z globalnym widzeniem zmiennej, to dwie różne rzeczy.<br /><br />Static stosujemy wtedy gdy zmienna ma być nie tracona np. po wywołaniu funkcji zrób_to, gdzie w środku niej jest zmienna nie_strać_mnie, jeżeli nie będzie static przed nią, to ona po wywołaniu tej funkcji przestaje istniej, czyli przestaje &quot;pamiętać&quot; swoją wartość, a za razem przestaje być widoczna dla innych funkcji itd.<br />Dzięki static, cały czas ta zmienna jest trzymana w pamięci i po wywołaniu ponownym tej funkcji ma ona tą samą wartość...... za s.124 książka niebieska. Nie wiem, czy faktycznie moje posty są przeźroczyste, ale już wyżej napisałem byś zajrzał na stronę 124.<p>Statystyki: Napisane przez Gość — 17 sty 2013, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mg101]]></name></author>
<updated>2013-01-17T14:20:22+01:00</updated>
<published>2013-01-17T14:20:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24985#p24985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24985#p24985"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24985#p24985"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />bo pewnie kolega przeoczył, że pojęcie GLOBALNA zmienna obowiązuje w języku C nie do CAŁEGO PROJEKTU - czyli WSZYSTKICH plików a TYLKO do tego jednego pliku *.C w którym jest jej definicja<br /></div> No właśnie. Skoro dana zmienna i tak jest widoczna tylko w tym jednym pliku bez &quot;static&quot; , to po co dawać &quot;static&quot; żeby była widoczna tylko w tym pliku. I nie jest tak że znalazłem błąd twórcy język C pana Stroustrupa , tylko czegoś nie kumam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=683">mg101</a> — 17 sty 2013, o 14:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-17T13:48:04+01:00</updated>
<published>2013-01-17T13:48:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24981#p24981</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24981#p24981"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24981#p24981"><![CDATA[
<div class="quotetitle">mg101 napisał(a):</div><div class="quotecontent"><br />A wyszło na to &quot;jakie to głupoty piszą w książce&quot;.  Nawet mi to nie przyszło do głowy! Wniosek. Luz to rzecz fajowa, ale nie zawsze.<br /></div><br /><br />Nie aż tak tego nie odebrałem i przepraszam - ale ja po prostu jestem uczulony na wszelkie stwierdzenia hmm odkrycia typu, że a to procesor jest zły, a to że producent zrobił błąd w procku bo &quot;mi nie działa&quot;, że kompilator jest zły bo robi błędy? bo nad nim nie da się zapanować, bo to bo siamto .... Niestety ale takie wypowiedzi na forach zwykle skutkują czym ????<br /><br />ano tym, że za jakiś czas ktoś sobie wejdzie, w taki temat - rzuci okiem po łebkach i co ??? i za chwilę na innym forum albo na tym samym nagle napisze że<br /><br />&quot;a ja gdzieś czytałem że kompilator jest do kitu&quot;, a czytałem że TE procki są do bani bo innym też coś tam nie działa<br /><br />rozumie mnie kolega? - niestety ja z takim czymś WALCZĘ a szczególnie na naszym forum i muszę ZAWSZE to sprostować. Więc nie chodzi mi tu broń Boże o jakieś przygadywanie czy uszczypliwości.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 sty 2013, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mg101]]></name></author>
<updated>2013-01-17T12:33:20+01:00</updated>
<published>2013-01-17T12:33:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24976#p24976</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24976#p24976"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24976#p24976"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />No tak tylko po co takie podejście, że są to 2 grzyby w barszczu ??? czyli co - że jakaś głupota kompilatora czy też języka C ? chce kolega powiedzieć ?<br /></div> Na przyszłość muszę być czujny ze słownictwem. Wiedziałem że popełniam błąd myślowy. Tylko nie wiedziałem gdzie. A wyszło na to &quot;jakie to głupoty piszą w książce&quot;.  Nawet mi to nie przyszło do głowy! Wniosek. Luz to rzecz fajowa, ale trzeba uważać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=683">mg101</a> — 17 sty 2013, o 12:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-17T12:06:31+01:00</updated>
<published>2013-01-17T12:06:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24973#p24973</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24973#p24973"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24973#p24973"><![CDATA[
<div class="quotetitle">mg101 napisał(a):</div><div class="quotecontent"><br />Oznacza to, że zmienna bufor nie będzie widoczna w innych plikach.<br />Ale czy jest to konieczne, skoro w pliku klawiatura.h nie ma żadnej  deklaracji odnośnie zmiennej bufor?<br />W tym deklaracji  extern uint8_t bufor;<br />Oczywiście będzie to działało, ale dla mnie są to 2 grzyby w barszczu.<br /></div><br /><br />No tak tylko po co takie podejście, że są to 2 grzyby w barszczu ??? czyli co - że jakaś głupota kompilatora czy też języka C ? chce kolega powiedzieć ?<br /><br />A może jednak warto sobie dalej podrążyć temat i dowiedzieć się więcej - zamiast uznawać to za nonsens. Nie jest tak prosto czasem zdalnie przez książkę wytłumaczyć WSZYSTKO a szczególnie początkującej osobie, która na tym etapie programowania rzadko nawet skorzysta z takiego mechanizmu. <br /><br />Specyfikator static może działać i działa w CAŁKIEM  inny sposób gdy stosujemy go do zmiennych GLOBALNYCH i całkiem inaczej dla zmiennych LOKALNYCH (automatycznych) ..... najpierw proszę sobie dobrze poćwiczyć i zrozumieć te dwie rzeczy - jak radzi kolega wyżej, aby przejść ze zrozumieniem do dalszych rzeczy. Bo zwykle próba okiełznania następnego tematu zanim poprzedni się dobrze zrozumie skutkuje brakiem zrozumienia. Ale jak mówię - ja zawsze gdy czegoś nie rozumiem w jakimś języku - to myślę sobie - że trzeba dalej nad typ popracować i rozgryźć zamiast pisać gdzieś na forum że to nonsens. To tak jakby początkująca osoba nagle wyłapała MEGA BŁĄD kompilatora czy PODSTAW języka C. Szok. Gdyby kompilatory i sam język C były najeżone tego typu błędami to nie sądzi kolega że już dawno tysiące osób by o tym pisało? że już dawno błąd zostałby poprawiony ???? eeeeh<br /><br />więc spróbuję to przybliżyć jeszcze troszkę... i będę mówił o STATIC ale w aspekcie zastosowania dla zmiennej globalnej.<br /><br />I tu pewnie pierwsza konsternacja - no bo jak to globalnej ? Tak tak - bo pewnie kolega przeoczył, że pojęcie GLOBALNA zmienna obowiązuje w języku C nie do CAŁEGO PROJEKTU - czyli WSZYSTKICH plików a TYLKO do tego jednego pliku *.C w którym jest jej definicja - i to proszę sobie zapamiętać. Tą &quot;ala globalność&quot; dla całego projektu można uzyskać dopiero dzięki właśnie DEKLARACJOM zmiennych czyli tych ze specyfikatorem extern !!!<br /><br />Jednak stosuje się czasem specyfikator STATIC w stosunku do takich zmiennych GLOBALNYCH w ramach pliku *.c z dwóch powodów:<br /><br />1. po to aby zmienne te nie były widoczne (udostępnione dla innych plików projektu) np jakaś hermetyczna biblioteka<br /><br />2. także po to aby dać kompilatorowi możliwość jeszcze lepszej optymalizacji dostępu do takich zmiennych, często się okazuje, i przecież MOŻNA to samemu sprawdzić, że po dodaniu specyfikatora static nagle okazuje się, że np zmieniła się ilość zajętości pamięci FLASH po kompilacji i to na PLUS. Nie oznacza to że takie zalety ujrzymy pisząc jednoplikowy projekt, gdzie mamy TYLKO main.c i w nim zmienne globalne, którym dodamy static. Wtedy może nie być żadnej korzyści - po prostu kompilator to zignoruje.<br /><br /><br />Uwaga! jeśli ktoś nie rozumiem powyżej pkt.1 to proponuję na razie nie zaprzątać sobie tym głowy - aż do czasu kiedy będzie się pisało większe projekty wieloplikowe.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 sty 2013, o 12:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mg101]]></name></author>
<updated>2013-01-17T11:56:09+01:00</updated>
<published>2013-01-17T11:56:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24971#p24971</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24971#p24971"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24971#p24971"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />Co do &quot;STATIC&quot; to oznacza tylko tyle, że zmienna statyczna to rozwiązanie pomiędzy zmienną globalną, a lokalną.<br />Polecam ci wrócić na stronę 124 Blue Booka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br /></div><br />STATIC użyty w funkcji oznacza że zmienna ta będzie pamiętana także po wyjściu z funkcji.<br />STATIC użyty przed funkcją oznacza że jest to zmienna globalna ale niewidoczna dla innych plików. Takie STATIC było w moim pytaniu.  Zastanawiam się  tylko czy w pliku klawiatura.c wystarczy tylko dać samo uint8_t bufor (zamiast static  uint8_t bufor). Bo jeżeli nic nie napiszę w pliku klawiatura.h o uint8_t bufor tzn. że nie udostępniam uint8_t bufor innym plikom. Czyli efekt będzie taki sam jak static  uint8_t bufor.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=683">mg101</a> — 17 sty 2013, o 11:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-17T10:23:12+01:00</updated>
<published>2013-01-17T10:23:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24966#p24966</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24966#p24966"/>
<title type="html"><![CDATA[Re: Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24966#p24966"><![CDATA[
<div class="quotetitle">mg101 napisał(a):</div><div class="quotecontent"><br />Od czasu do czasu wracam do książki. <br />Na str 130 w pliku klawiatura.c jest deklaracja<br />static uint8_t bufor;<br />Oznacza to, że zmienna bufor nie będzie widoczna w innych plikach.<br />Ale czy jest to konieczne, skoro w pliku klawiatura.h nie ma żadnej  deklaracji odnośnie zmiennej bufor?<br />W tym deklaracji  extern uint8_t bufor;<br />Oczywiście będzie to działało, ale dla mnie są to 2 grzyby w barszczu.<br /></div><br /><br />Nie do końca rozumiem twoje pytanie. <br />Co do &quot;STATIC&quot; to oznacza tylko tyle, że zmienna statyczna to rozwiązanie pomiędzy zmienną globalną, a lokalną.<br />Polecam ci wrócić na stronę 124 Blue Booka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 17 sty 2013, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mg101]]></name></author>
<updated>2013-01-17T09:36:54+01:00</updated>
<published>2013-01-17T09:36:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24965#p24965</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24965#p24965"/>
<title type="html"><![CDATA[Czy tu slowo &quot;static&quot; jest potrzebne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2128&amp;p=24965#p24965"><![CDATA[
Od czasu do czasu wracam do książki. <br />Na str 130 w pliku klawiatura.c jest deklaracja<br />static uint8_t bufor;<br />Oznacza to, że zmienna bufor nie będzie widoczna w innych plikach.<br />Ale czy jest to konieczne, skoro w pliku klawiatura.h nie ma żadnej  deklaracji odnośnie zmiennej bufor?<br />W tym deklaracji  extern uint8_t bufor;<br />Oczywiście będzie to działało, ale dla mnie są to 2 grzyby w barszczu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=683">mg101</a> — 17 sty 2013, o 09:36</p><hr />
]]></content>
</entry>
</feed>