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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-09-28T16:33:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22585&amp;mode</id>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-09-28T16:33:21+01:00</updated>
<published>2019-09-28T16:33:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222251#p222251</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222251#p222251"/>
<title type="html"><![CDATA[Re: Struktury pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222251#p222251"><![CDATA[
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ć. <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=18188">JarekB</a> — 28 wrz 2019, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-09-28T12:32:59+01:00</updated>
<published>2019-09-28T12:32:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222250#p222250</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222250#p222250"/>
<title type="html"><![CDATA[Re: Struktury pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222250#p222250"><![CDATA[
<div class="quotetitle">JarekB napisał(a):</div><div class="quotecontent"><br />Mirek. Pierwszy i drugi zapis to Twoje wpisy<br />Pytanie było takie dlaczego &quot;TIMIONA&quot;, musi ona być różna od jawnej nazwy struktury, w tym przypadku &quot;IMIONA&quot;.<br /></div><br /><br />Jak zwykle przepraszam ... ale źle zrozumiałem pytanie teraz już wiem w czym rzecz tzn o co tobie chodziło.<br /><br />Tak nazwa jawna i niejawna mogą być takie same, to błąd na blogu ...<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />na blogu poprawiłem dodając &quot;nie&quot; musi być różna <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=54">mirekk36</a> — 28 wrz 2019, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-09-27T18:37:02+01:00</updated>
<published>2019-09-27T18:37:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222240#p222240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222240#p222240"/>
<title type="html"><![CDATA[Re: Struktury pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222240#p222240"><![CDATA[
&quot;a co ma Qurczę wspólnego pierwszy zapis wymyślony który podałeś z drugim ?&quot;<br />Mirek. Pierwszy i drugi zapis to Twoje wpisy <br />Pytanie było takie dlaczego &quot;TIMIONA&quot;, musi ona być różna od jawnej nazwy struktury, w tym przypadku &quot;IMIONA&quot;.<br /><br />Staram się pewne rzeczy ogarnąć. Tyle i tylko tyle.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 27 wrz 2019, o 18:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-09-27T16:34:55+01:00</updated>
<published>2019-09-27T16:34:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222238#p222238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222238#p222238"/>
<title type="html"><![CDATA[Re: Struktury pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222238#p222238"><![CDATA[
<div class="quotetitle">JarekB napisał(a):</div><div class="quotecontent"><br />W poradniku Mirka na blogu<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/07/struktury-w-c-wyjasnijmy-sobie-dokadnie.html" >http://mirekk36.blogspot.com/2013/07/st ... adnie.html</a><!-- m --><br />dotyczącym struktur przeczytałem fragment cytuje:<br />......... stwórcy C wymyślili możliwość wskazania tzw &quot;NAZWY SKRÓCONEJ&quot;, dla nowo powoływanego do życia typu, z użyciem &quot;typedef&quot;. Dlatego zobacz mogę to zrobić tak:[syntax=c]typedef struct IMIONA {<br />        uint8_t ala;<br />        uint8_t ola;<br />} TIMIONA;[/syntax]Widzisz? dodałem za nawiasem klamrowym skróconą nazwę &quot;TIMIONA&quot;, musi ona być różna od jawnej nazwy struktury, w tym przypadku &quot;IMIONA&quot;.<br /><br /><br /><br /><br />I teraz przeglądam sobie YB gdzie jest typ strukturalny w takiej formie:<br />[syntax=c]typedef struct TSTIMER {<br />    uint16 costam;<br />    void (* tmr_callback)( struct TSTIMER * tmr );<br />} TSTIMER;[/syntax] Co się stało że w tym przypadku nazwa jawna może być taka sama jak nazwa skrócona.<br /></div><br /><br />a co ma Qurczę wspólnego pierwszy zapis wymyślony który podałeś z drugim ?<br /><br />NIC<br /><br /><div class="quotetitle">moscow napisał(a):</div><div class="quotecontent"><br />W drugim przypadku ucierpi nieco czytelność<br /></div><br />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 &quot;ucierpienie czytelności&quot;<br /><br />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<br /><br />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.<br /><br />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.<br /><br />A przy dobrej analizie z YB można się jeszcze czegoś nauczyć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 wrz 2019, o 16:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow]]></name></author>
<updated>2019-09-27T10:01:35+01:00</updated>
<published>2019-09-27T10:01:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222235#p222235</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222235#p222235"/>
<title type="html"><![CDATA[Re: Struktury pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222235#p222235"><![CDATA[
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ł.<br /><br />Co do typedef to drugi przypadek porównałbym do czegoś takiego:<br />[syntax=c]// definiuje typ CHAR jako char<br />typedef char CHAR;<br />// tworzy zmienną CHAR o typie CHAR<br />CHAR CHAR;<br />// przypisuje zmiennej CHAR wartość 0<br />CHAR = 0;[/syntax]<br />Można i będzie to działać... ale czy jest sens tak robić to już mocno dyskusyjne.<br /><br />Dla czystości kodu osobiście użyłbym następujących konstrukcji<br />[syntax=c]typedef struct {<br />        uint8_t ala;<br />        uint8_t ola;<br />} TIMIONA;<br /><br />static TIMIONA imiona;<br /><br />typedef struct {<br />    uint16 costam;<br />    void (* tmr_callback)( struct TSTIMER * tmr );<br />} TSTIMER;<br /><br />static TSTIMER tsTimer;[/syntax]<br />(static jeśli zmienna globalna a nie automatyczna)<br />Wtedy mamy odrobinę przejrzystszą sytuację, i do tego konsekwentnie nazwy zmiennych są zapisywane w systemie notacji np. camelCase. W oryginale zmienne <em>ala</em>, <em>ola</em>, <em>costam </em>i <em>tmr </em>są zapisane małymi literami, a zmienne <em>IMIONA </em>i <em>TSTIMER </em>są też zmiennymi i zapisane dużymi literami - co nie jest konsekwentne.<br /><br />PS. Jeszcze po doczytaniu dotarło do mnie, że ta druga deklaracja może to być związane z przypadkiem jak opisany tutaj<br /><!-- m --><a class="postlink" href="https://stackoverflow.com/questions/16831605/strange-compiler-warning-c-warning-struct-declared-inside-parameter-list" >https://stackoverflow.com/questions/168 ... meter-list</a><!-- m --><br />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<br /><br /><em>Warningits scope is only this definition or declaration, which is probably not what you want<br /></em><br />Mam nadzieję, że to pomoże :-)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20760">moscow</a> — 27 wrz 2019, o 10:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2019-09-27T07:27:44+01:00</updated>
<published>2019-09-27T07:27:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222234#p222234</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222234#p222234"/>
<title type="html"><![CDATA[Struktury pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22585&amp;p=222234#p222234"><![CDATA[
W poradniku Mirka na blogu<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/07/struktury-w-c-wyjasnijmy-sobie-dokadnie.html" >http://mirekk36.blogspot.com/2013/07/st ... adnie.html</a><!-- m --><br />dotyczącym struktur przeczytałem fragment cytuje:<br />......... stwórcy C wymyślili możliwość wskazania tzw &quot;NAZWY SKRÓCONEJ&quot;, dla nowo powoływanego do życia typu, z użyciem &quot;typedef&quot;. Dlatego zobacz mogę to zrobić tak:[syntax=c]typedef struct IMIONA {<br />        uint8_t ala;<br />        uint8_t ola;<br />} TIMIONA;[/syntax]Widzisz? dodałem za nawiasem klamrowym skróconą nazwę &quot;TIMIONA&quot;, musi ona być różna od jawnej nazwy struktury, w tym przypadku &quot;IMIONA&quot;.<br /><br /><br /><br /><br />I teraz przeglądam sobie YB gdzie jest typ strukturalny w takiej formie:<br />[syntax=c]typedef struct TSTIMER {<br />    uint16 costam;<br />    void (* tmr_callback)( struct TSTIMER * tmr );<br />} TSTIMER;[/syntax] Co się stało że w tym przypadku nazwa jawna może być taka sama jak nazwa skrócona.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 27 wrz 2019, o 07:27</p><hr />
]]></content>
</entry>
</feed>